Redis 설치부터 기초까지

ramong2·2025년 6월 22일

Docker로 Redis 설치 및 실행

docker run -d \
  --name redis \
  -p 6379:6379 \
  redis

1. Redis란?

정의

  • Redis는 Remote Dictionary Server의 약자.
  • 인메모리 기반의 Key-Value 저장소로, 데이터가 RAM에 저장되어 매우 빠름.
  • 영속성 옵션도 존재하여 디스크에도 저장 가능.
  • NoSQL 계열의 데이터베이스로, 다양한 데이터 구조를 지원함.

사용 목적

  • 캐시 (예: 세션, 조회수, 상품정보 캐싱)
  • 실시간 데이터 처리 (예: 랭킹, 채팅, Pub/Sub
  • 큐 시스템 (예: 메시지 브로커)
  • 분산락, 세션 저장 등

2. 주요 데이터 구조 (with 실습)

  1. String
    가장 기본적인 타입 (하나의 Key에 문자열 값 저장)
    SET name "redis"
    GET name             # "redis"
    INCR counter         # counter 값 1 증가 (초기값 없으면 0부터 시작)
    DEL name             # name 키 삭제
  1. List
  • 순서가 있는 문자열의 집합 (양방향 큐)
  • Stack / Queue처럼 사용 가능
    LPUSH fruits apple     # 리스트 왼쪽에 추가
    RPUSH fruits banana    # 리스트 오른쪽에 추가
    LRANGE fruits 0 -1     # 전체 출력: ["apple", "banana"]
    LPOP fruits            # 왼쪽에서 꺼내기 → apple
    RPOP fruits            # 오른쪽에서 꺼내기 → banana
    DEL fruits 			 # fruits 리스트 삭제
  1. Set
  • 중복 없는 값들의 집합, 순서 없음
    SADD colors red blue green
    SADD colors blue        # 중복값은 무시됨
    SMEMBERS colors         # 모든 값 출력
    SISMEMBER colors red    # 특정 값 존재 여부 확인  
  1. Hash
  • 하나의 키에 여러 필드-값 쌍 저장 (딕셔너리 느낌)
    HSET user:1 name "Alice" age 30
    HGET user:1 name          # "Alice"
    HGETALL user:1            # 모든 필드-값 조회
    HDEL user:1 age           # age 필드 삭제
  1. Sorted Set (ZSet)
  • Set과 유사하지만, 각 요소에 Score가 있음 → 정렬된 상태 유지

    ZADD leaderboard 100 "user1"
    ZADD leaderboard 200 "user2"
    ZRANGE leaderboard 0 -1 WITHSCORES  # 점수 낮은 순으로 정렬
    ZREVRANGE leaderboard 0 -1 WITHSCORES # 높은 순
    ZSCORE leaderboard "user1"           # user1의 점수 조회
    
    

3. TTL(Time-To-Live): 만료 시간

  • EXPIRE 명령어로 키에 만료 시간(초 단위) 지정 가능
  • TTL이 지난 키는 자동으로 삭제됨
SET session:1234 "token"
EXPIRE session:1234 60    # 60초 뒤 만료
TTL session:1234          # 남은 TTL 시간 확인

응용

  • 로그인 세션 관리, 인증코드 유효시간 설정 등

최종 정리

데이터 타입명령어 예시설명
StringSET key val, GET key, INCR key문자열 저장/증가
ListLPUSH key val, LRANGE key 0 -1리스트 (스택/큐)
SetSADD key val, SMEMBERS key중복 없는 집합
HashHSET key field val, HGETALL key필드-값 쌍 저장 (Map)
Sorted SetZADD key score val, ZRANGE key점수 기반 정렬된 집합
TTLEXPIRE key seconds, TTL key유효시간 설정/조회

0개의 댓글