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 이벤트를 삭제하며 이를 통해 스트림에서 특정 이벤트를 제거할 수 있습니다.
'DB' 카테고리의 다른 글
[Redis] Geospatials, Bitmaps (0) | 2024.05.06 |
---|---|
[Redis]Sets,Hashes (0) | 2024.05.02 |
[Redis] String, List (1) | 2024.05.01 |