string
에는 최대 512MB의 문자열을 저장할 수 있다.string
은 키와 값이 일대일로 연결되는 유일한 자료 구조SET
커맨드로 string
데이터를 저장하고 GET
으로 조회한다.> SET hello world
ok
> GET hello
"world"
NX
옵션을 통해 키가 없을 때만 새 키를 저장하도록 할 수 있다.XX
옵션으로 키가 있을 때만 덮어 쓰기를 하고 새로운 키는 생성하지 않도록 할 수 있다.> SET hello newal NX
(nil)
> SET hello newal XX
ok
> GET hello
"newal"
string
자료구조는 숫자 형태 데이터도 저장할 수 있다.INCR
, INCRBY
키워드로 숫자를 원자적으로 조작할 수 있다.
> SET counter 100
ok
> INCR counter
(integer) 101
> INCRBY counter 50
(integer) 151
MSET
, MGET
커맨드로 여러 키를 한 번에 조작 가능하다.
> MSET a 10 b 20 c 30
ok
> MGET a b c
1) "10"
2) "20"
3) "30"
list
는 순서를 가지는 문자열의 목록이다
list
에는 최대 42억여 개의 아이템을 저장할 수 있다.LPUSH
- 왼쪽에 데이터를 추가RPUSH
- 오른쪽에 데이터 추가LRANGE
- list의 데이터를 조회LPOP
- 첫 번째 아이템을 삭제하며 반환한다.LTRIM
- 시작과 끝 아이템 인덱스를 인자로 전달 받아 범위에 속하지 않은 아이템은 모두 삭제
LPUSH
와 함께 적절히 사용하면 고정된 길이의 큐를 쉽게 유지할 수 있다.
LPUSH
후 LTRIM
LINSERT
- 원하는 데이터 앞이나 뒤에 데이터를 추가
BEFORE
, AFTER
옵션을 통해 앞, 뒤 중 선택할 수 있다.LSET
- 저장한 인덱스 데이터를 신규 값으로 덮어쓸 수 있다.LINDEX
- 원하는 인덱스의 데이터를 확인 가능hash
는 필드-값 쌍을 가진 아이템의 집합이다.hash
내에서 유일하며 필드와 값 모두 문자열로 저장된다.hash
는 객체를 표현하기 적절한 자료구조이기에 DB 테이블 데이터로 변환하는 것도 간단하다.HSET
커맨드로 hash에 아이템을 저장할 수 있다.> HSET Product:123 Name "Happy Hacking"
(integer) 1
> HSET Product:123 TypeID 35
(integer) 1
> HSET Product:123 Version 2002
(integer) 1
> HSET Product:234 Name "Track Ball" TypeID 32
(integer) 2
HGET
커맨드로 데이터를 가져올 수 있는데 키와 아이템 필드를 함께 입력해야 한다.> HGET Product:123 TypeID
"35"
> HGET Product:234 Name, TypeID
1) "Track Ball"
2) "32"
HGETALL
커맨드로 모든 필드-값 쌍을 차례로 반환한다.> HGETALL Product:234
1) "Name"
2) "Track Ball"
3) "TypeID"
4) "32"
sorted set
은 스코어(score
) 값에 따라 정렬되는 고유한 문자열 집합이다.
list
처럼 인덱스를 이용해 각 아이템에 접근 가능하다.
list
보다 sorted set
을 사용하는 것이 효율적이다.list
는 O(n), sorted set
은 O(log(n))으로 처리된다.ZADD
커맨드로 sorted set
에 아이템을 저장할 수 있다.
> ZADD score:220817 100 user:B
(integer) 1
> ZADD score:220817 150 user:A 150 user:C 200 userF 300 user:E
(integer) 4
ZADD
커맨드엔 다양한 옵션이 있다.
XX
: 아이템이 이미 존재할 때만 스코어를 업데이트NX
: 아이템이 존재하지 않을 때만 신규 삽입, 기존 아이템 스코어를 업데이트하지 않음LT
: 업데이트하려는 스코어가 기존 스코어보다 작을 때만 업데이트. 존재하지 않을 땐 신규 삽입GT
: 업데이트하려는 스코어가 기존 스코어보다 클 때만 업데이트. 존재하지 않을 땐 신규 삽입ZRANGE
커맨드로 sorted set
의 데이터를 조회할 수 있다.
start
와 stop
범위를 항상 입력해야 한다.> ZRANGE key start stop [BYSCORE | BYLEX] [REV] [LIMIT offset count]
[WITHSCORES]
sorted set
은 여러 옵션을 통해 다양한 조건으로 데이터를 검색 가능하다.ZRANGE
커맨드는 기본적으로 인덱스 기반 조회
start
, stop
인자에 인덱스를 전달WITHSCORE
옵션으로 스코어와 함께 출력할 수 있다.REV
옵션으로 역순 출력할 수 있다.> ZRANGE score:220817 1 3 WITHSCORES
1) "user:A"
2) "150"
3) "user:C"
4) "150"
5) "user:F"
6) "200"
list
처럼 음수 인덱스를 사용 가능하다.
ZRANGE <key> 0, -1
커맨드는 모든 데이터를 조회한다ZRANGE
커맨드에 BYSCORE
옵션으로 스코어로 데이터를 조회 가능하다> ZRANGE score:220817 100 150 BYSCORE WITHSCORES
1) "user:A"
2) "100"
3) "user:C"
4) "150"
5) "user:F"
6) "150"
# 스코어에 ( 문자를 추가하면 해당 스코어를 포함하지 않는다.
> ZRANGE score:220817 (100 150 BYSCORE WITHSCORES
1) "user:C"
2) "150"
3) "user:F"
4) "150"
sorted set
은 스코어가 같으면 사전 순으로 정렬된다.BYLEX
옵션으로 사전 순서를 이용해 특정 아이템을 조회할 수 있다.
start
, stop
에 사전 순 비교를 위한 문자열을 전달(
, 포함하지 않을 때 [
문자 사용> ZRANGE mySortedSet (b (f BYLEX
banana
candy
dream
egg
string
자료 구조에 bit 연산을 수행할 수 있도록 확장한 형태다.SETBIT
와 GETBIT
커맨드로 비트맵을 다룰 수 있다.> SETBIT mybitmap 2 1
(integer) 1
> GETBIT mybitmap 2
(integer) 1
BITCOUNT
커맨드로 1로 설정된 비트 수를 카운팅할 수 있다.> BITCOUNT mybitmap
(integer) 4)
hyperloglog
는 집합의 원소 개수인 카디널리티를 추정할 수 있는 자료 구조다.
hyperloglog
는 저장되는 데이터 수에 구애받지 않고 유일한 원소 개수를 계산할 수 있다.
set
과 달리 일정한 메모리를 유지한다.hyperloglog
에 최대 12KB 크기를 가지며 최대 2^64개 아이템을 저장할 수 있다.PFADD
커맨드로 아이템을 저장하고, PFCOUNT
로 카디널리티를 추정할 수 있다.> PFADD members 123
(integer) 1
> PFADD members 500
(integer) 1
> PFADD members 12
(integer) 1
> PFCOUNT members
(integer) 3
Geospatial
자료 구조는 경도, 위도 데이터 쌍으로 지리 데이터를 저장하는 방법이다.
sorted set
으로 저장GEOADD <key> 경도 위도 member
순으로 저장> GEOADD travel 14.2353452534 50.235234123 prague
(integer) 1
GEOPOS
커맨드로 저장된 위치 데이터를 조회 가능> GEOPOS travel prague
1) 1) "14.2353452534"
2) "50.235234123"
stream
은 레디스를 메시지 브로커로서 사용할 수 있게 하는 자료 구조다.stream
은 append-only 방식으로 데이터를 저장