Redis(Remote Dictionary Server)는 인메모리 키-값 저장소다. 극도로 빠른 읽기/쓰기 성능(초당 수백만 건)으로 캐싱, 세션 관리, 실시간 순위표, 메시지 브로커로 활용된다.
데이터 타입
bash
# String
SET key "value"
GET key
INCR counter # 원자적 카운터 증가
# List
LPUSH queue "task1" "task2" # 왼쪽 삽입
RPOP queue # 오른쪽 꺼내기
# Hash (객체 저장)
HSET user:1 name "Alice" age 30
HGETALL user:1
HGET user:1 name # Alice
# Set (중복 없는 집합)
SADD tags "python" "web" "api"
SMEMBERS tags
SINTER tags1 tags2 # 교집합
# Sorted Set (순위표)
ZADD leaderboard 1000 "Alice"
ZADD leaderboard 850 "Bob"
ZRANGE leaderboard 0 -1 WITHSCORES # 오름차순
ZREVRANGE leaderboard 0 2 # 상위 3명
TTL (Time To Live)
bash
SET session:abc123 "user_data"
EXPIRE session:abc123 3600 # 1시간 후 자동 삭제
TTL session:abc123 # 남은 시간 확인
캐싱 패턴
python
import redis, json
r = redis.Redis(host='localhost', port=6379)
def get_user(user_id):
cached = r.get(f'user:{user_id}')
if cached:
return json.loads(cached) # 캐시 히트
user = db.query(f"SELECT * FROM users WHERE id={user_id}")
r.setex(f'user:{user_id}', 300, json.dumps(user)) # 5분 캐시
return user
관련 개념
참고문헌