[Redis] Sorted Sets, Streams

SeungJoo
|2024. 5. 3. 14:02
반응형

Sorted Set

 

일명 ZSets는 Redis 같은 데이터 베이스 시스템에서 사용하는 데이터 구조로, 각 요소가 유일한 문자열과 연관된 점수를 가지며 이 점수에 따라 자동으로 정렬되는 집합입니다. ZSets은 실시간 순위 표시나, 범위 검색, 점수 업데이트 와 같이 정렬된 데이터에 대한 빠른 접근이 필요한 애플리케이션에서 유용하게 사용됩니다.

ZADD

$ ZADD points 10 TeamA 10 TeamB 50 TeamC

Sorted Set에 하나 이상의 멤버와 그에 해당하는 점수를 추가합니다. 여기서 points라는 이름의 Sorted Set에 TeamA, TeamB에 각 점수 10, TeamC에 점수 50을 할당하고 있습니다. 만약 이미 존재하는 멤버의 점수를 업데이트할 때는 이 명령어를 다시 사용해서 업데이트하면 됩니다.

ZRANGE

$ ZRANGE points 0 -1

지정된 범위의 요소들을 Sorted Set에서 조회합니다. 여기서 0 - 1 은 Set의 처음부터 끝까지 모든 요소를 가져오는 의미이며 기본적으로 점수가 낮은 순서대로 요소들을 반환하게 됩니다.

$ ZRANGE points 0 -1 REV WITHSCORES

REV옵션을 사용하여 요소들을 점수가 높은 순서대로 반환하며 WITHSCORES 옵션을 추가하여 각 멤버와 그에 대응하는 점수를 함께 출력합니다.

ZRANK

$ ZRANK points TeamA

지정된 멤버의 순위를 반환합니다. 순위는 0부터 시작하게 되며, 점수가 낮은 멤버부터 순서대로 매겨집니다. 만약 TeamA의 점수가 10이고, Team B도 10일 때 동일한 수를 가지면 사전 순으로 먼저 나오기 때문에 TeamA의 순위는 0이 됩니다.

Streams

레디스는 append-only log 형태의 데이터 구조를 지원하는 것을 Streams라고 부릅니다. Streams는 메시지나 이벤트를 처리하기 위한 고성능 자료 구조이며, 다양한 소비자 그룹을 허용하여 여러 소비자가 동일한 메시지 스트림을 동시에 처리할 수 있게 지원합니다.

레디스의 Streams를 사용하면 실시간 이벤트 처리 및 스트링 데이터처리 시스템을 구축할 수 있고, 대규모 분산 시스템에서 발생하는 이벤트를 안정적으로 처리하며 실시간으로 분석 및 대시보드에 표시하는 것이 유용합니다.

$ XADD events * action like user_id 1 product_id 1

events 스트림에 새로운 이벤트를 추가하며 *은 새로운 메시지 ID를 자동으로 생성하라는 의미이며 action, user_id, product_id는 해당 이벤트의 속성입니다. 이 명령어는 user_id가 1이며 product_id가 1인 like 액션을 기록하게 됩니다.

$ XADD events * action like user_id 2 product_id 1
// 출력 결과 "1714631161377(등록 시간)-0"

또 다른 이벤트를 events 스트림에 추가하게 되며 이번엔 user_id가 2이며 product_id가 1인 like 액션을 기록하게 됩니다.

$ XRANGE events - +: events

스트림에 있는 모든 이벤트를 가져오며 `-`는 가장 오래된 이벤트부터 `+`는 가장 최신 이벤트를 의미합니다.

$ XDEL events ID
// ID = 1714631161377-0

특정 ID 이벤트를 삭제하며 이를 통해 스트림에서 특정 이벤트를 제거할 수 있습니다.

728x90

'DB' 카테고리의 다른 글

[Redis] Geospatials, Bitmaps  (0) 2024.05.06
[Redis]Sets,Hashes  (0) 2024.05.02
[Redis] String, List  (1) 2024.05.01