[REDIS] 레디 스는 : 정렬과 이웃 키 N를 얻을 수
REDIS레디 스는 : 정렬과 이웃 키 N를 얻을 수
이 전 레디 스에서 이러한 쌍을 가지고 있다고 가정 해 봅시다 :
1237.56 "John"
1224.59 "Robert"
1213.34 "Mahmoud"
1242.90 "George"
1020.11 "Mary"
1723.09 "Jay"
1589.77 "Khan"
1106.62 "Albert"
키는 항상 소수점 수입니다. 번호를 제공 할 때, 나는 가장 가까운 번호를 양방향으로 두 개의 키를 좀하고 싶습니다.
나는 1242의 이웃을 검색하는 경우 예를 들어, 결과 집합이 있어야합니다
1224.59 "Robert"
1237.56 "John"
1242.90 "George"
1589.77 "Khan"
이게 가능해? 나는 아직도 어떤 도움 레디 스 덕분에 새로운 해요.
해결법
-
==============================
1.예와 아니오 같은 시간.하지
예와 아니오 같은 시간.하지
예 이유는 무엇입니까? 단 하나의 데이터 유형을 레디 스 - 소트 세트는 소수점에 따라 값의 범위를 얻을 수 있습니다. 그래서 ZRANGEBYSCORE하면 점수 범위로 값을 얻을 수 있습니다.
ZRANGEBYSCORE theKey 1220 1600
당신은 수요에 대한 데이터 세트를 제공합니다.
왜 안돼? 귀하의 질문에 당신은 점수의 이웃에 대해 부탁드립니다. ZRANGEBYSCORE가 최대 점수 이에 분 점수의 값을 얻을 수 있습니다하지 "미만 주어진 얻을 X 값"또는 "X 값이 큰 다음 주어진".
-
==============================
2.이 한계 zrangebyscore 매개 변수를 사용하여 가능하다. 두 쿼리를 확인해야합니다 - 하나는 양쪽에있는 이웃을 얻을 수 있습니다.
이 한계 zrangebyscore 매개 변수를 사용하여 가능하다. 두 쿼리를 확인해야합니다 - 하나는 양쪽에있는 이웃을 얻을 수 있습니다.
예를 들어, 당신은 더 적은이 같은 쿼리 외모 점수보다 점수와 N을 얻으려면 :
zrangebyscore KEY <SCORE> +inf limit 0 <N>
그리고이 같은보다 큰 점수로 N :
zrevrangebyscore KEY +inf <SCORE> limit 0 <N>
이 같은 key_sort : 당신이 소트 세트 테스트를했다 말 :
"a": 10 "b": 20 "c": 30 "d": 40 "e": 50
이어서 zrevrangebyscore 시험 : key_sort + 25 INF 제한 0~2 복귀 zrangebyscore C 및 시험 D : 한계 key_sort -INF 25 0 2 리턴, B
from https://stackoverflow.com/questions/20273371/redis-sort-and-get-n-neighbour-keys by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스 정렬 범위로 필터링 및 제 10 반환 (0) | 2020.01.20 |
---|---|
[REDIS] 레디 스 연결 풀 + Node.js를 (0) | 2020.01.20 |
[REDIS] 어떻게 봄 데이터 레디 스 저장소와 동적 쿼리를 구축? (0) | 2020.01.20 |
[REDIS] 웹 서비스 아키텍처 : 레디 스 (캐시 등) 및 지속성에 대한 PostgreSQL을 (0) | 2020.01.20 |
[REDIS] 로드하지 않고 루비 resque 환경 레일 (0) | 2020.01.20 |