2025.04.09 - [redis] - [Redis] 레디스의 기본 개념 (2) - 레디스에서 키를 관리하는 법
[Redis] 레디스의 기본 개념 (2) - 레디스에서 키를 관리하는 법
Redis에서 키를 관리하는 방법Redis는 단순한 Key-Value 저장소 이상의 기능을 제공합니다. 특히 자료구조별로 키의 생성, 삭제, 조회, 만료를 관리하는 다양한 방식이 존재합니다. 이 글에서는 Redis의
featherdale.tistory.com
레디스의 기본 개념 (1) - 자료 구조 및 명령어
Redis는 다양한 자료구조 기반의 인메모리 데이터 저장소입니다.
이 글에서는 Redis의 주요 자료구조를 핵심만 정리해보았습니다.
1. String
가장 기본이 되는 자료구조로, 단순한 문자열뿐 아니라 정수, 실수처럼도 사용할 수 있습니다.
주요 특징
- Key - Value 구조 (예: "count": "1")
- 최대 512MB까지 저장 가능
- SET 명령어에 다양한 옵션 부여 가능
SET key value # 기본 저장
SET key value NX # key가 없을 때만 저장
SET key value XX # key가 있을 때만 저장
연산 기능
INCR
, INCRBY
명령으로 원자적 증가 연산 가능
INCR counter
INCRBY counter 5
2. List
문자열의 순서 있는 목록을 저장하는 자료구조입니다.
스택(후입선출), 큐(선입선출) 구조 모두 구현 가능합니다.
LPUSH mylist "a" "b" "c"
RPUSH mylist "x" "y"
LPOP mylist
LRANGE mylist 0 -1
LTRIM mylist 0 2
3. Hash
Key 안에 또 다른 Key-Value 쌍을 저장하는 구조입니다.
RDBMS의 한 행(Row)을 표현하기에 적합합니다.
HMSET user:1 name "Alice" age "30"
HGET user:1 name
HGETALL user:1
4. Set
중복 없는 값들의 집합입니다. 순서는 보장하지 않습니다.
SADD tags "java" "redis" "spring"
SISMEMBER tags "redis"
SMEMBERS tags
5. Sorted Set (ZSet)
정렬된 집합 구조로, 각 원소에 점수(score)를 부여해 자동 정렬합니다.
내부적으로는 Skip List로 구현되어 인덱스 기반 조회에 적합합니다.
ZADD leaderboard 100 "user1" 150 "user2"
ZRANGE leaderboard 0 -1 WITHSCORES
ZREVRANK leaderboard "user1"
6. 비트맵 (Bitmap)
String 구조를 비트 단위로 해석해 0 또는 1로 저장합니다.
간단한 플래그 저장이나 출석 체크 등에 활용할 수 있습니다.
SETBIT user:checkin 1 1
GETBIT user:checkin 1
BITCOUNT user:checkin
7. HyperLogLog
고유 값의 수를 근사치로 계산하는 데 특화된 자료구조입니다.
메모리를 약 12KB로 고정하면서 수백만 개의 고유 값을 처리할 수 있습니다.
PFADD visitors "user1" "user2" "user3"
PFCOUNT visitors
8. Geospatial
위경도 기반 위치 데이터를 저장하고, 반경 검색이나 거리 계산이 가능합니다.
GEOADD places 127.0 37.5 "seoul"
GEODIST places "seoul" "busan" km
GEORADIUS places 127.0 37.5 10 km
9. Stream
Redis 5.0부터 추가된 자료구조로, Kafka와 유사한 로그 기반 스트림 저장 방식입니다.
생산자/소비자 모델을 구현할 수 있습니다.
XADD mystream * name "alice" message "hello"
XREAD COUNT 2 STREAMS mystream 0
XGROUP CREATE mystream group1 $
XREADGROUP GROUP group1 consumer1 STREAMS mystream >
마무리
Redis는 단순한 키-값 저장소를 넘어 다양한 자료구조와 유틸리티 기능을 제공합니다.
적절한 자료구조를 선택하면 메모리를 효율적으로 활용하면서 성능까지 최적화할 수 있습니다.
'redis' 카테고리의 다른 글
[redis] 센티널 설정 실습 (0) | 2025.05.19 |
---|---|
[Redis] 레디스 자료구조 활용 (2) - 자료 구조 활용 실습 (0) | 2025.04.11 |
[Redis] 레디스 자료구조 활용 (1) - 자료 구조 별 시간 복잡도 및 사례 확인 (0) | 2025.04.11 |
[Redis] 레디스의 기본 개념 (2) - 레디스에서 키를 관리하는 법 (0) | 2025.04.09 |
[Redis] 마이크로서비스 아키텍처와 레디스 (1) | 2025.04.04 |