Redis 기본 정리.

·2026년 2월 21일

1. Key의 특징

  • unique -> key 중복 저장시 덮어쓰기
  • binary safe
  • simple
  • key의 최대 길이는 512 mb

2. 기본 명령어


Set User:1 anna 
 // Table:PK value(네이밍 규칙)  
 
Get User:1    // -> 출력: anna

Set User:2 Kim

expire User:2 30  // 30초뒤 만료

// 위 명령어 이후 10초 경과 가정 시
ttl User:2  // 출력 20

// 위 명령어 이후 21초 경과 가정 시
ttl User:2 // 출력 -2  -2는 만료됌 혹은 없는 값을 의미

tta User:1 // 출력 -1  -1은 만료시간이 없는 경우 출력

// 만료 시간 한번에 지정 PX는 ms 단위, EX가 s 단위
SET User:3 PX 5000  

// NX와 XX
SET User:4 hello   // User:4 의 val는 hello
SET User:4 world NX // User:4 의 val는 hello , NX는 Key의 값이 이미 존재시 저장X.
SET User:5 redis NX // User:5 의 val는 redis

SET User:5 spring XX // User:5 의 val는 spring. XX는 Key가 존재시 Update
SET User:6 spring XX //User:6는 (nil)

  

3. Data 타입

  • Redis는 다양한 자료형(String, List, Set 등)을 지원한다.

  • 가장 기본 타입은 String이며, 숫자도 문자열 형태로 저장된다.
    단, 숫자 형태의 문자열은 내부적으로 정수로 처리되어 증가/감소 연산이 가능하다.

1) List

  • Redis의 List Linked List기반으로 pointer로 논리적 연결로 생각하자.!

    • lpush

      • 값을 왼쪽(Head) 에 하나씩 순서대로 삽입
      • 기존 값 앞에 계속 붙음
        // 내부 처리 과정
        			[1]
        			[2,1]
        			[3,2,1]
        			[4,3,2,1]
        			[5,4,3,2,1]


      그래서 lpop을 하게 된다면 5가 나온다!

      • LPUSH + LPOP = Stack
      • LPUSH + RPOP = Queue
    • rpush

      rpush rightUser 1 2 3 4 5 
      //	값을 오른쪽(Tail) 에 순서대로 삽입
      //	입력 순서 그대로 유지됨
      
      // 내부 처리과정
        [1]
        [1,2]
        [1,2,3]
        [1,2,3,4]
        [1,2,3,4,5]
      


      이때 맨 왼쪽을 Pop하면 -> 1

      • RPUSH + LPOP = Queue
      • RPUSH + RPOP = Stack

2) Set

  • 중복 불가
  • 순서 없음
  • 집합 연산 가능
  • 평균 O(1)
SADD myset 1 2 3 4 5
SADD myset 8 9 10
SADD myset 9   // 중복 → 추가 안 됨

SADD yourset 7 1 4 5 8

// 차집합 
SDIFF myset yourset //출력 : 2 3 9 10

// 교집합
SINTER myset yourset // 출력 : 1 4 5 8

// 합집합
SUNION myset yourset // 출력 : 1 2 3 4 5 7 8 9 10

3) Hash (Java의 HashMap 느낌)

  • key 안에 field-value 구조
  • depth 1 단계
HSET users:1 id 1 name daul age 31 marketing true

HGET users:1 name
HGETALL users:1

4) Sorted Set (ZSet)

  • member + score 구조
  • score 기준으로 자동 정렬
  • 중복 member X (score는 변경 가능)
ZADD myzset 1 a 2 b 3 c 4 d 5 e

// 조회
ZRANGE myzset 0 -1

ZINCRBY myzset 5 a // a 점수 : 6

ZINCRBY myzset -4 a //a 점수 : 2
profile
# h

0개의 댓글