Redis 공부 - 2

강문혁·2023년 8월 11일
0

redis-study

목록 보기
2/2
post-thumbnail

Chapter 2

Advanced Data Types


Index

  1. Sets
  2. Sorted Set
  3. Bitmap
  4. HyperLogLog

Sets

집합, 비정렬, 중복된 Member가 있을 수 없는 Data Type

모든 Member가 Integer인 경우 Set 메모리 공간을 줄일 수 있다.

Element의 총 개수는 set-max-intset-entries의 값 만큼 높을 수 있다.

Data filtering, Data grouping, Membership checking 등으로 활용할 수 있다.

Commands

SADD : 세트에 Member 추가, 이미 존재하는 Member는 추가할 수 없다.

SINTER : Set끼리 비교해서 겹치는 Member를 반환한다. (교집합)

SDIFF : A Set와 B Set끼리 비교해 중복되는 Member를 제외한 A Set의 Member를 반환한다. (차집합)

user:max:favorite_artists - user:hugo:favorite_artists

SUNION : 여러 개의 세트를 다같이 합쳐 출력한다. 단 Set의 특징처럼 중복된 Member는 하나의 Member로 출력한다. (합집합)

Arctic Monkeys는 user:max:favorite_artists, user:hugo:favorite_artists 둘 다 중복되는 Member이므로 하나로 합쳐 출력한다.

SRANDMEMBER : Set중 Random으로 Member를 반환한다.

SISMEMBER : Member가 Set에 존재 유무를 알 수 있다.
이 친구 우리 멤버 맞나요?
Yes = 1, No = 2

SREM : 특정 Member 삭제

SREM으로 “Arctic Monkeys” 삭제 후 SISMEMBER로 존재하는지 확인

SCARD : Member 수 반환

SMEMBERS : Set에 있는 Member 모두 출력


Sorted Sets

단어 그대로 Sets에서 정렬된 Data Type

Sorted Set의 각 Element에는 연관된 점수가 존재한다.

Sorted Set은 Set보다 성능이 느리다.

실시간 대기 리스트 시스템, 게임 순위표 표시, 자동완성 시스템 구축등이 가능하다.

Commands

ZADD : 하나 이상의 Member를 추가하고 만약 이미 있는 Member의 경우 무시한다.

ZRANGE : 낮은 Score 순서대로 (오름차순) Member를 반환한다.
-1은 마지막 Member

ZREVRANGE : ZRANGE의 Reverse 역순으로 Member를 반환

WITHSCORES : ZRANGE, ZREVRANGE 맨 마지막에 넣으면 스코어와 함께 반환된다.

ZREM : 특정 Member 삭제

ZSCORE : 특정 Member의 Score 반환

ZRANK : 특정 Member의 Rank 확인

ZREVRANK : ZRANK의 역순


Bitmaps

Bitmap은 실제 데이터 타입이 아닌 String 타입이다.

하지만 Bitmap이 String에 대한 비트 연산이라고 말할 수 있으며, String을 Bitmap으로 간주하는 명령어가 존재하기 때문에 Bitmap으로 간주한다고한다.

Bitmap index를 Offset으로 참조한다.

비트맵은 메모리 친화적이고 빠른 데이터 조회를 지원한다.

Commands

SETBIT : Bitmap offset에 값을 부여하는데 사용 1 또는 0만 허용된다.

GETBIT : Bitmap offset 입력하면 Bit리턴

BITCOUNT : offset이 1인 개수 출력

BITOP : 대상 키, 비트 연산 및 해당 연산에 적용하고 결과를 따로 새로운 키에 저장한다.


HyperLogLogs

실제 Data Type이 아니다.

Element수에 대한 근사치를 제공하기 위해 무작위화(Randomization)을 사용하는 알고리즘

실행속도 O(1)로만 동작하고 하나의 키당 아주 작은 메모리(최대 12KB)를 사용한다.

HyperLogLog 알고리즘은 확률적이기 때문에 100%의 정확도를 보장하지 않는다. (약 0.81%의 표준 오차를 가진다.)

이론상 셀 수 있는 셋의 개수 제한은 사실 없다.

고유 개수 카운팅을 수행하려면 카운팅하려는 세트의 항목 수에 비례하는 메모리량이 필요

HyperLogLog가 100%정확하진 않지만, 일부 상황에서 99.19%의 정확도가 나온다.

Commands

PFADD : 카디널리티가 변경된 경우 1을 반환하고 동일하게 유지되면 0을 반환

PFCOUNT : 하나 이상의 키를 매개 변수로 받고, 근사치 개수를 반환

PFMERGE : 대상키와 하나 이상의 HyperLogLog키를 매개변수로 받아야하고 병합 후 대상키에 저장

profile
흔들리지 말고 나만의 공부를 하자

2개의 댓글

comment-user-thumbnail
2023년 8월 11일

많은 도움이 되었습니다, 감사합니다.

1개의 답글