수색…


소개

Redis의 Sorted Set 데이터 유형은 Set 데이터 유형의 정렬 된 버전입니다. Redis 정렬 집합은 고유 한 구성원으로 구성됩니다. 정렬 된 집합의 각 구성원은 구성원과 점수로 구성된 쌍으로 생각할 수 있습니다. 점수는 집합 내의 구성원을 오름차순으로 정렬하는 데 사용됩니다.

통사론

  • ZADD 키 [NX | XX] [CH] [INCR] 점수 회원 [점수 회원 ...]
  • ZCARD 키
  • ZCOUNT 키 최소값
  • ZLEXCOUNT 키 최소값

비고

Sorted Sets에 대한 공식 문서는 Redis.io 사이트에서 찾을 수 있습니다.

정렬 된 집합을 때때로 z 세트라고합니다. 정렬 된 집합 키에 TYPE 명령을 사용하면 값 zset이 반환됩니다.

정렬 된 집합에 항목 추가

Redis는 정렬 된 집합에 항목을 추가하는 ZADD 명령을 제공합니다. ZADD 명령의 기본 형식은 집합, 추가 할 항목 및 점수를 지정하는 것입니다. 예를 들어, 가장 좋아하는 음식을 가장 많이 주문한 순서대로 구성하려면 다음 중 하나를 사용할 수 있습니다.

zadd favs 1 apple
zadd favs 2 pizza
zadd favs 3 chocolate
zadd favs 4 beer

또는 대안으로 :

zadd favs 1 apple 2 pizza 3 chocolate 4 beer

ZADD 함수는 정렬되지 않은 집합 함수 SADD와 매우 유사하게 작동합니다. ZADD 명령의 결과는 추가 된 항목 수입니다. 위와 같이 세트를 만든 후에 ZADD 맥주를 다시 시도하면 :

ZADD favs 4 beer

내가 맥주보다 초콜릿을 더 좋아한다고 결정하면 나는 0 결과를 얻는다.

ZADD favs 3 beer 4 chocolate

내 기본 설정을 업데이트하려면 맥주와 초콜릿 모두 세트에 포함되어 있기 때문에 여전히 0 반환 결과가 표시됩니다.

정렬 된 집합의 항목 수 계산

Redis는 ZCARD, ZCOUNT, ZLEXCOUNT 세 가지 명령을 사용하여 정렬 된 집합 내의 항목을 계산합니다.

ZCARD 명령은 세트의 카디널리티에 대한 기본 테스트입니다. (세트에 대한 SCARD 명령과 유사합니다.). ZCARD는 집합 구성원 수를 반환합니다. 다음 코드를 실행하여 항목을 항목에 추가합니다.

zadd favs 1 apple
zadd favs 2 pizza
zadd favs 3 chocolate
zadd favs 4 beer

ZCard 실행 :

zcard favs

값 4를 반환합니다.

ZCOUNT 및 ZLEXCOUNT 명령을 사용하면 값 범위를 기반으로 정렬 된 집합에있는 항목의 하위 집합을 계산할 수 있습니다. ZCOUNT를 사용하면 특정 점수 범위 내의 항목을 계산할 수 있으며 ZLEXCOUNT를 사용하면 특정 사전 기록 범위 내의 항목 수를 계산할 수 있습니다.

위의 세트를 사용하여 :

zcount favs 2 5

점수가 2에서 5 사이 인 세 가지 항목 (피자, 초콜릿, 맥주)이 있기 때문에 3을 반환합니다.

ZLEXCOUNT는 모든 항목의 점수가 동일하고, 이름을 강제로 지정하고 주문하는 세트와 함께 작동하도록 설계되었습니다. 우리가 다음과 같은 세트를 만든다면 :

zadd favs 1 apple
zadd favs 1 pizza
zadd favs 1 chocolate
zadd favs 1 beer

특정 lexographical 범위의 요소 수를 얻기 위해 ZLEXCOUNT를 사용할 수 있습니다 (이 작업은 memcpy 함수를 사용하여 바이트 단위 비교를 통해 수행됩니다).

zlexcount favs [apple (chocolate

두 요소 (사과, 맥주)가 apple (포함) 및 chocolate (독점) 범위에 속하기 때문에 2를 반환합니다. 우리는 양자 택일로 양쪽 끝을 포함 할 수 있었다 :

zlexcount favs [apple [chocolate

결과를 얻으십시오 3.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow