/엔지니어/데이터베이스/Redis 기초 실전 — 캐시, 세션, 메시지 큐
데이터베이스초급UbuntuDebianCentOSRedis캐시NoSQL

Redis 기초 실전 — 캐시, 세션, 메시지 큐 활용

Redis 설치부터 String·Hash·List·Sorted Set 자료구조 활용, 캐시 전략, TTL까지 실무 중심으로 정리합니다.

설치

Bash
# Ubuntu
apt install redis-server

# 접속 테스트
redis-cli ping  # PONG

/etc/redis/redis.conf에서 requirepass yourpassword 설정을 권장합니다.


기본 명령어

Bash
redis-cli

# String
SET user:1:name "Alice"
GET user:1:name
INCR counter
INCRBY counter 10

# TTL (만료)
SET session:abc "token" EX 3600   # 3600초 후 자동 삭제
TTL session:abc                    # 남은 시간 (초)
PERSIST session:abc               # TTL 제거

# 키 조회 (운영 환경에서는 SCAN 사용)
SCAN 0 MATCH user:* COUNT 100

Hash — 객체 저장

Bash
HSET user:1 name "Alice" email "[email protected]" age 30
HGET user:1 name
HGETALL user:1
HDEL user:1 age
HEXISTS user:1 email  # 1 (있음) / 0 (없음)

List — 큐/스택

Bash
# FIFO 큐
RPUSH tasks "job1" "job2" "job3"
LPOP tasks       # "job1" (왼쪽에서 꺼냄)
LLEN tasks       # 남은 길이

# 블로킹 팝 (워커 대기)
BLPOP tasks 30   # 최대 30초 대기

Set · Sorted Set

Bash
# Set (중복 없음)
SADD tags "redis" "nosql" "cache"
SMEMBERS tags
SISMEMBER tags "redis"  # 1

# Sorted Set (점수로 정렬)
ZADD leaderboard 1500 "alice"
ZADD leaderboard 2300 "bob"
ZRANGE leaderboard 0 -1 WITHSCORES   # 오름차순
ZREVRANGE leaderboard 0 2             # Top 3
ZINCRBY leaderboard 100 "alice"       # 점수 증가

Cache-aside 패턴

Python
import redis, json

r = redis.Redis(host='localhost', port=6379)

def get_user(user_id):
    cache_key = f"user:{user_id}"
    cached = r.get(cache_key)

    if cached:
        return json.loads(cached)

    user = db.query(f"SELECT * FROM users WHERE id = {user_id}")
    r.setex(cache_key, 3600, json.dumps(user))
    return user

모니터링

Bash
# 서버 정보
redis-cli info memory
redis-cli info stats

# 메모리 사용량 상위 키
redis-cli --bigkeys

# 느린 명령 로그
redis-cli slowlog get 10
#Redis#캐시#NoSQL#세션#메시지큐
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

관련 공식 문서Redis 공식 문서

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.