redis 주문 세트 zset은 일반 세트와 매우 유사하며, 반복되는 요소가 없는 문자열 세트입니다.
차이점은 주문된 세트의 각 구성원이 점수와 연관되어 있으며 이 점수는 세트의 구성원을 가장 낮은 점수
에서 가장 높은 점수까지 정렬하는 데 사용된다는 것입니다.
세트의 멤버는 고유하지만 등급은 반복될 수 있습니다.
요소가 정렬되어 있기 때문에 점수나 위치에 따라 다양한 요소를
빠르게 얻을 수 있습니다.
중복된 멤버 없이 정렬된 세트를 스마트 열
테이블로 사용할 수 있으므로 정렬된 세트의 중간 요소에 액세스하는 것도 매우 빠릅니다.
zadd: 요소 추가
zrange: 오름차순으로 점수를 매기고 지정된 인덱스 범위의 요소를 가져옵니다.
정렬된 세트 키에 저장된 지정된 범위의 요소를 반환합니다. 반환된 요소는 점수를 기준으로 가장 낮은 것에서 가장 높은 것까지 정렬되는 것으로 생각할 수 있습니다. 점수가 동일하면 사전순으로 정렬됩니다.
아래 첨자 매개변수 start 및 stop은 모두 기본 0입니다. 즉, 0은 순서가 지정된 세트의 첫 번째 멤버를 나타내고, 1은 순서가 지정된 세트의 두 번째 멤버를 나타내는 식입니다.
마지막 멤버를 나타내는 -1, 마지막 멤버에서 두 번째를 나타내는 -2 등의 음수 첨자를 사용할 수도 있습니다.
zrange 키 0 -1: 모든 요소를 얻을 수 있음
withscores: 멤버와 해당 점수 값을 함께 반환하며, 반환 목록은 value1, Score1, …, valueN, ScoreN 형식으로 표현됩니다.
사용 가능한 버전:
시간 복잡도:O(log(N)+M), N은 순서 집합의 카디널리티이고 M은 결과 집합의 카디널리티입니다.
반환 값:
지정된 간격의 점수 값(선택 사항)이 있는 정렬된 집합 구성원 목록
zrevrange: 점수 내림차순, 지정된 인덱스 범위의 요소 가져오기
정렬된 집합 키에 저장된 값을 반환 지정된 범위의 요소입니다. 반환된 요소는 가장 높은 점수에서 가장 낮은 점수로 정렬된 것으로 간주될 수 있습니다. 점수가 동일하면 사전별로 정렬됩니다. 아래 첨자 매개변수 start 및 stop은 모두 기본 0입니다. 즉, 0은 순서가 지정된 세트의 첫 번째 멤버를 나타내고, 1은 순서가 지정된 세트의 두 번째 멤버를 나타내는 식입니다.
마지막 멤버를 나타내는 -1, 마지막 멤버에서 두 번째를 나타내는 -2 등의 음수 첨자를 사용할 수도 있습니다.
withscores: 멤버와 해당 점수 값을 함께 반환합니다. 반환 목록은 value1, Score1, ..., valueN, ScoreN 형식으로 표현됩니다.
zrangebyscore: 지정된 점수 범위 내의 데이터를 오름차순으로 반환합니다. 점수별로 정렬
zincrby: 지정된 요소의 점수에 지정된 증분을 추가합니다.
zrem: 컬렉션의 여러 요소 삭제
zremrangebyrank: 인덱스 범위를 기준으로 요소 삭제
zremrangebyscore: 점수 기준 요소의 범위 삭제
zcount: 지정된 점수 범위 내의 요소 수를 계산합니다.
zrank: 집합에 있는 요소의 순위를 점수별로 오름차순으로 반환합니다.
zscore: 집합에 있는 지정된 요소의 점수를 반환합니다
데이터 구조
SortedSet(zset)은 Redis에서 제공하는 매우 특별한 데이터 구조로 내부적으로 두 가지 데이터 구조가 사용됩니다.
1. 해시 테이블
은 Java의 Map
에서 정의한 점수를 빠르게 확인할 수 있습니다. 비트 요소입니다. 시간 복잡도는 O(1)
2. 스킵 리스트
스킵 리스트는 매우 뛰어난 데이터 구조로 구현이 간편하며 삽입, 삭제, 검색의 복잡도는 O(logN)입니다.
Java의 ConcurrentSkipListSet과 유사하게 점수 값에 따라 정렬한 후 건너뛰기 목록을 생성합니다. 위치 순서 또는 점수 순서로 요소를 빠르게 쿼리할 수 있습니다.
위 내용은 Redis 주문 세트 zset의 지식 포인트는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!