Redis 주요 데이터 구조 이해
KUKJIN LEE • 2주 전 작성
Redis는 다양한 데이터 구조를 제공함으로써 단순한 키-값 저장을 넘어 여러 형태로 데이터를 관리하고 효율적인 연산을 지원합니다. 실제로 특정 게시물을 단순히 캐싱하여 조회 속도를 향상시키는 상황에서는 가장 기본적인 String
타입만으로 충분한 경우가 많습니다.
String
가장 기본적인 데이터 타입으로, 단순한 문자열 값 또는 직렬화된 JSON, 숫자 값을 저장하는 데 사용합니다.
-
GET/SET
명령으로 쉽게 저장하고 조회 가능합니다. -
TTL
설정을 통해 만료 시간 관리 가능합니다.
단일 게시물 내용, 사용자 프로필 정보, 토큰 값 캐싱 등
Hash
필드-값을 갖는 자료구조로, 하나의 키에 대해 여러 개의 속성을 관리할 때 유용합니다.
-
HSET
,HGET
명령을 사용하여 특정 필드에 접근 가능 -
여러 속성을 하나의 키 아래서 관리할 수 있다.
사용자 프로필 정보(이름, 이메일, 나이) 메타데이터를 한 번에 저장하고 조회할 때 사용
List
삽입 순서를 유지하는 연결 리스트 형태로, 앞뒤로 데이터를 삽입/추출하는 데 최적화되어 있다.
-
LPUSH
,RPUSH
로 리스트 앞/뒤에 요소를 추가 -
LPOP
,RPOP
으로 리스트 앞/뒤에서 요소를 제거
최신 게시물 목록, 최근 활동 로그, 대기열 형태의 작업 처리
(순서가 중요한 데이터, 최근 업데이트 목록, 대기열 구현)
Set
유일한 값들의 집합으로, 중복 없이 데이터 항목을 관리할 수 있다.
-
SADD
,SMEMBERS
를 통해 중복 없는 값 관리 -
값 존재 여부 검사에 유용
특정 태그를 가진 게시물 ID 집합, 좋아요 누른 유저 목록, 팔로워 목록 등
(단일 게시물 캐싱과는 직접 관련성이 낮고, 게시물 관련 특수한 필터링, 조건에 만족하는 게시물 ID) 등에 활용 된다.
Sorted Set(ZSet)
값마다 점수(Score)가 할당되어 정렬이 가능한 집합이며, 점수를 기준으로 정렬되어 저장된다.
-
ZADD
,ZRANGE
,ZREVRANGE
를 통해 점수 기반 정렬 데이터 관리 -
실시간 랭킹, 인기 게시물 정렬 등에 활용
게시물 조회 수 기반 랭킹 관리, 실시간 인기 게시물 목록, 게임 점수 순위 등에서 사용
(단일 게시물 캐싱에는 사용하지 않고, 게시물 랭킹이나 인기도 순위 관리를 할 때 사용한다.)