DB

[Redis] Data Type (Sorted Sets, Bitmaps, HyperLogLog)

Raconer 2024. 2. 23. 00:44
728x90

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
728x90

'DB' 카테고리의 다른 글

[Redis]리더 보드란?  (0) 2024.03.01
[Redis] Spring Boot Redis 기본 설정  (0) 2024.02.24
[Redis] Data Type (Strings, Lists, Sets, Hashes)  (0) 2024.02.23
[Redis] Redis란?  (0) 2024.02.20
MongoDB 구성  (0) 2024.02.18