sellen

Redis - Set, Sorted Set, Hash 본문

DataBase/NoSQL

Redis - Set, Sorted Set, Hash

sellen 2025. 7. 23. 16:42

💡 NomadCoder - SQL 마스터클래스 강의를 듣고 정리한 글입니다.
아래의 링크에 SQL 학습에 필요한 데이터가 존재합니다.
https://nomadcoders.co/sql-masterclass
 

SQL 마스터클래스 – 노마드 코더 Nomad Coders

SQL을 정복하기 위한 단 하나의 강의

nomadcoders.co

아래의 링크에서 다양한 명령어를 확인하실 수 있습니다.

https://redis.io/docs/latest/commands

 

Commands

Redis Cloud Fully managed and integrated with Google Cloud, Azure, and AWS.

redis.io

Set

list와 비슷하나 정렬되어있지 않고 중복된 value를 허용하지 않는다.

리스트와 똑같이 4,294,967,295 만큼 저장할 수 있다.

Create

같은 값을 입력할 경우 0 (false)으로 출력된다.

SADD {key} {value} {value} ...
SADD post:1:like user:1

Read

SMEMBERS

해당 Set에 저장된 value 조회

SMEMBERS {key}
SMEMBERS post:1:like

SISMEMBER

해당 Set에 value가 있는지 조회

SISMEMBER {key} {value}
SISMEMBER post:1:like user:1
SISMEMBER post:1:like user:3  # user:3은 없기 때문에 0으로 출력된다.

SCARD

해당 Set에 value가 몇 개 있는지 출력

SCARD post:1:like

집합 연산

SINTER

A ∩ B

여러 Set에서 공통된 value 출력

SINTER {key} {key}
SINTER post:1:like post:2:like

SDIFF

A - B

Set A와 Set B가 있을 때 A에는 있지만 B에는 없는 value 출력

SDIFF {key} {key}
SDIFF post:1:like post:2:like

SUNION

A ∪ B

Set A와 Set B의 합집합 출력

SUNION {key} {key}
SUNION post:1:like post:2:like

Delete

SREM {key} {value}
SREM post:2:like user:1

Sorted Set

Set과 같으나 value에 점수를 부여할 수 있고 부여된 점수에 따라 정렬된다.

Create

ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member

 

구분 설명
NX 이미 존재하는 멤버는 무시하고 존재하지 않는 멤버만 추가
XX 이미 존재하는 멤버에 대해서만 점수 업데이트
GT 기존 점수보다 클 때만 점수 업데이트
LT 기존 점수보다 작을 때만 점수 업데이트
CH - CH가 없을 경우 실제 추가된 요소의 개수만 반환한다.
- CH가 있을 경우 변경된 요소의 개수도 포함하여 반환한다.
INCR 지정한 멤버의 점수에 score 만큼 더한다.
(이때, 멤버는 1개만 선택해야 합니다.)
ZADD scores 1 user:1 2 user:2 10 user:3 6 user:4

Read

ZRANGE key start stop [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]

 

구분 설명

start stop start 부터 stop까지 조회
(기본적으로 score 기준 오름차순 정렬)
BYSCORE 인덱스 대신 score를 기준으로 조회
ZRANGE set 10 20 BYSCORE score가 10~20인 요소 조회
BYLEX score 대신 멤버 기준으로 조회
ZRANGE myset [a (b BYLEX a 이상 b 미만
REV 내림차순 정렬
LIMIT offset count 페이징
LIMMIT 2 3 인덱스 2부터 3개
WITHSCORES 멤버에 score도 같이 출력
  • [x → x 이상
  • (x → x 초과
  • +inf, inf → 무한대
ZRANGE scores1 0 -1
ZRANGE scores 0 -1 WITHSCORES   # 멤버와 점수도 같이 출력

ZREVRANGE

역순으로 출력

ZREVRANGE {key} {start} {end} [WITHSCORES]
ZREVRANGE scores 0 -1 WITHSCORES

ZRANGEBYSCORE

특정 범위 내 member 출력

ZRANGEBYSCORE {key} {min} {max} [WITHSCORES] [LIMIT offset count]
ZRANGEBYSCORE scores 7 11

ZRANK

특정 member의 순위 출력

ZRANK {key} {member} [WITHSCORE]
ZRANK scores user:1

ZSCORE

특정 member의 점수 출력

ZSCORE {key} {member}
ZSCORE scores user:3

ZCOUNT

특정 범위 내의 member 수 출력

ZCOUNT {key} start end
ZCOUNT scores 5 10

Update

ZADD

ZADD를 통해 기존의 값을 업데이트할 수 있다.

ZADD {key} {score} {member}
ZADD scores 3 user:2

ZINCRBY

ZINCRBY를 통해 특정 member의 값을 원하는 값만큼 증가시킬 수 있다.

ZINCRBY {key} {increment} {member}
ZINCRBY scores 1 user:4

Delete

ZREM {key} {member} {member} ...
ZREM scores user:3

Hash

Redis의 Hash는 중첩 Hash를 지원하지 않는다.

Create

HSET {key} {field} {value} {field} {value} ...
HSET player:1 name nico xp 0 hp 100

Read

특정 field 조회

HGET {key} {field}
HGET player:1 name  # nico
HGET player:1 xp    # 0

여러 field 조회

HMGET {key} {field} {field} ...
HMGET player:1 xp hp name

Hash의 모든 field 조회

리스트를 출력하는 형식으로 출력된다.

HGETALL {key}
HGETALL player:1

특정 field가 존재하는지 조회

HEXISTS {key} {field}
HEXISTS player:1 xp  # 1

Update

HSET

특정 field의 값을 value로 변경한다.

HSET {key} {field} {value} {field} {value} ...
HSET player:1 name Nico

HINCRBY

해당 Hash의 field 값을 value만큼 더한다.

HINCRBY {key} {field} {value}
HINCRBY player:1 xp 10
HINCRBY player:1 hp -10

Delete

HDEL {key} {field} {value} {field} {value} ...
HDEL player:1 xp

'DataBase > NoSQL' 카테고리의 다른 글

Redis - String, List  (1) 2025.07.23
Redis 설치  (3) 2025.07.23
MongoDB - Aggregation  (0) 2025.07.23
MongoDB CRUD - 2  (1) 2025.07.23
MongoDB CRUD - 1  (0) 2025.07.23