Skip to content

Redis 알아보기 #

Find similar titles

2회 업데이트 됨.

Edit
  • 최초 작성자
    sjkim
  • 최근 업데이트
    sjkim

Structured data

Category
Programming

Redis #

Image

출처:https://en.wikipedia.org/wiki/Redis

Redis는 오픈 소스 기반의 인메모리 데이터 저장소로, 많은 개발자와 기업들에게 널리 사용되고 있는 효율적이고 강력한 도구이다. Redis는 다양한 용도로 활용될 수 있으며, 메모리 내에서 데이터를 저장하고 액세스할 수 있는 빠른 속도와 유연한 기능을 제공한다. 이 글에서는 Redis의 주요 기능과 장점, 그리고 실제 사용 사례에 대해 알아보겠다.

Image

출처:https://backendless.com/redis-what-it-is-what-it-does-and-why-you-should-care/

인메모리 데이터 저장 #

Redis는 데이터를 디스크에 저장하는 대신 메모리에 저장하여 빠른 데이터 액세스를 가능하게 한다. 이를 통해 Redis는 초당 수백만 개의 작업을 처리하고 지연 시간을 최소화할 수 있다. 따라서 실시간 애플리케이션, 캐싱, 세션 관리 등 많은 사용 사례에서 높은 성능을 발휘한다.

다양한 데이터 구조 #

Redis는 단순한 키-값(key-value) 쌍 저장소 이상의 기능을 제공한다. Redis는 문자열, 해시맵, 리스트, 셋, 정렬된 집합 등 다양한 데이터 구조를 지원한다. 이는 다양한 용도에 맞게 데이터를 모델링하고 처리하는 데 유용하다. 예를 들어, 리스트는 메시지 대기열을 구현하는 데 유용하며, 정렬된 집합은 랭킹 시스템을 구축하는 데 활용될 수 있다.

데이터 구조와 예시 #

1.문자열 (String)

Redis의 문자열은 단순한 키-값 쌍이며, 테이블의 단일 열과 유사하다. 예를 들어, "user:1:name"이라는 키에 "John"이라는 값을 저장할 수 있다. 이 키-값 쌍은 사용자 ID가 1인 사용자의 이름을 나타내는 열로 생각할 수 있다.

2.해시맵 (Hash)

Redis의 해시맵은 키-값 쌍을 그룹화하여 테이블의 여러 열을 표현할 수 있다. 예를 들어, "user:1"이라는 해시맵에 "name", "age", "email"과 같은 여러 필드를 저장할 수 있다. 이러한 해시맵은 사용자 정보를 다양한 열로 구성된 테이블로 나타낼 수 있다.

3.리스트 (List)

Redis의 리스트는 순서가 있는 요소들의 집합으로, 테이블의 한 열에 해당한다. 예를 들어, "queue"라는 리스트에 메시지 큐에 들어온 메시지들을 순서대로 저장할 수 있다. 이 리스트는 테이블의 한 열로 생각할 수 있으며, 메시지 큐에 도착한 순서대로 메시지를 처리하는 데 유용하다.

4.셋 (Set)

Redis의 셋은 고유한 값들의 집합으로, 테이블의 열에 해당한다. 예를 들어, "users"라는 셋에 각 사용자의 ID를 저장할 수 있다. 이 셋은 테이블의 열로 생각할 수 있으며, 중복되지 않는 사용자 ID를 관리하는 데 유용하다.

5.정렬된 집합 (Sorted Set)

Redis의 정렬된 집합은 셋과 비슷하지만, 각 요소에 대한 순위 정보를 제공한다. 이는 테이블의 열에 해당하는데, 각 요소의 값에 따라 정렬된 순서로 저장된다. 예를 들어, "scores"라는 정렬된 집합에 각 사용자의 점수를 저장하고, 랭킹을 확인할 수 있다. 이 정렬된 집합은 테이블의 열로 생각할 수 있으며, 사용자 점수에 따라 랭킹 정보를 제공하는 데 유용하다.

다음은 Redis 주요 데이터 구조를 표 형식으로 정리한 내용이다.

데이터구조 설명 예시
문자열 단일 키-값 쌍을 저장하는 데이터 구조 "user:1:name" -> "John"
해시맵 여러 필드와 그에 대응하는 값들을 그룹화하여 저장하는 데이터 구조 "user:1" -> { "name": "John", "age": 30, "email": "..." }
리스트 순서가 있는 요소들의 집합을 저장하는 데이터 구조 "queue" -> [ "message1", "message2", "message3" ]
고유한 값들의 집합을 저장하는 데이터 구조 "users" -> [ "user1", "user2", "user3" ]
정렬된 집합 셋과 비슷하지만 각 요소에 대한 순위 정보를 제공하는 데이터 구조 "scores" -> { "user1": 500, "user2": 800, "user3": 300 }

위의 데이터 구조들은 Redis에서 테이블의 열(Column)에 해당하며, 각각의 데이터 구조를 이용하여 다양한 데이터를 저장하고 처리할 수 있다. Redis는 이러한 데이터 구조들을 조합하여 복잡한 데이터 모델을 구축할 수 있다. 예를 들어, 사용자 정보를 다루는 애플리케이션에서는 해시맵을 사용하여 각 사용자의 정보를 저장하고, 사용자 ID를 셋에 저장하여 고유한 사용자 목록을 관리할 수 있다. 또한, 사용자의 점수를 저장하고 랭킹을 확인해야 하는 경우에는 정렬된 집합을 활용할 수 있다.

참조 #

https://redis.io

0.0.1_20230725_7_v68