5. Sorted Sets
- Set과 유사하게 유니크한 값의 집합
- 각 값은 연관된 score를 가지고 정렬되어 있음
- 정렬된 상태이기에 빠르게 최소/최대값을 구할 수 있음
- 순위 계산, 리더보드 구현 등에 활용
> ZADD myrank 10 apple 20 banana 30 grape
> 3
> ZRANGE myrank 0 1
> "apple"
> "banana"
> ZRANK myrank banana
> 1
명령어 |
기능 |
예제 |
ZADD |
한개 또는 다수의 값을 추가 또는 수정 |
ZADD myrank 10 apple 20 banana |
ZRANGE |
특정 범위 값을 반환(오름차순) |
ZRANGE myrank 0 1 |
ZRANK |
특정 값의 위치(순위) 반환(오름차순) |
ZRANK myrank apple |
ZREVRANK |
특정 값의 위치(순위) 반환(내림차순) |
ZREVRANK myrank apple |
ZREM |
한개 이상의 값을 삭제 |
ZREM myrank apple |
6. Bitmaps
- 비트 벡터를 사용해 N개의 Set을 공간 효율적으로 저장
- 하나의 비트맵이 가지는 공간은 4,294,967,295(2^32-1)
- 비트 연산 가능
> SETBIT visit 2 1
> 0
> SETBIT visit 3 1
> 0
> GETBIT visit 2
> 1
> BITCOUNT visit
> 2
# key:visit |0|1|1|0|0|
# (index) 0 1 2 3 4
명령어 |
기능 |
예제 |
SETBIT |
비트맵의 특정 오프셋에 값을 변경 |
SETBIT visit 10 1 |
GETBIT |
비트맵의 특정 오프셋의 값을 반환 |
GETBIT visit 10 |
BITCOUNT |
비트맵에서 set(1) 상태인 비트의 개수를 반환 |
BITCOUNT visit |
BITOP |
비트맵들간의 비트 연산을 수행하고 결과를 비트맵에 저장 |
BITOP AND result today yesterday |
7. HyperLogLog
- 유니크한 값의 개수를 효율적으로 얻을 수 있음
- 확률적 자료구조로서 오차가 있으며, 매우 큰 데이터를 다룰 때 사용
- 18,446,744,073,709,551,616(2^64)개의 유니크 값을 계산 가능
- 12KB까지 메모리를 사용하며 0.81%의 오차율을 허용
- 내부에 데이터를 저장하지 않는다.
> PFADD visit Jay Peter Jane
> 1
> PFCOUNT visit
> 3
명령어 |
기능 |
예제 |
PFADD |
HyperLogLog에 값 추가 |
PFAD visit Jay Peter Jane |
PFCOUNT |
HyperLogLog에 입력된 값들의 cardinality(유일값의 수) 반환 |
PFCOUNT visit |
PFMERGE |
다수의 HyperLogLog를 병합 |
PFMERGE result visit1 visit2 |