[REDIS] 레디 스 : 어떻게 정렬 된 세트 "보통"세트가 교차하는?
REDIS레디 스 : 어떻게 정렬 된 세트 "보통"세트가 교차하는?
(즉, 더 나은 것인지 또는 소트 세트 또는 목록) 내가 100 1000 문자열의 집합을 가정합니다.
그럼 난 더 많은 문자열의 정렬 된 세트 B가 100 만명을 말한다.
지금은 C (물론 문자열)는 A와 B의 교점이 될 것이다.
나는 X는 C.에있는 모든 튜플 (X, SCORE_OF_X_IN_B)를 갖고 싶어
어떤 아이디어?
나는이 개 아이디어를 가지고 :
1. 레디 스 측에 너무 많은 오버 헤드 방법이 있지만 (예를 들어 쓰기해야하는 페이지가 너무 http://redis.io/commands/zinterstore을 매우 높은 시간 복잡도를 말한다 레디 스.) 2. 것 | A | 데이터베이스 연결은 좋은 선택하지 않을 것이다.
어쩌면 내가 zscore처럼하지만, 캐릭터 라인의 임의의 숫자와 함께 작동하는 레디 스 / 루아 스크립트를 작성할 수 있지만, 나는 확실하지 내 호스팅 스크립트를 허용하는 경우 해요 ...
난 그냥 스크립트없이 사용할 수있는 우아하고 빠른 해결책이있는 경우, SO 물어보고 싶은게 그래서!
해결법
-
==============================
1.문제에 대한 간단한 해결책이있다 : ZINTERSTORE는 SET와 ZSET 작동합니다. 시험:
문제에 대한 간단한 해결책이있다 : ZINTERSTORE는 SET와 ZSET 작동합니다. 시험:
redis> sadd foo a (integer) 1 redis> zadd bar 1 a (integer) 1 redis> zadd bar 2 b (integer) 1 redis> zinterstore baz 2 foo bar AGGREGATE MAX (integer) 1 redis> zrange baz 0 -1 withscores 1) "a" 2) "1"
편집 : 레디 스 무엇이든으로는 (분류) 세트 줄에이 점수를하는 (비 분류) 설정 foo는 각 부재 (1)의 기본 점수를 제공하고, SUM 때문에 나는 위의 AGGREGATE MAX를 추가했다.
from https://stackoverflow.com/questions/10500695/redis-how-to-intersect-a-normal-set-with-a-sorted-set by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 어떻게 도커 작성을 사용하여 레디 스 용기에 연결? (0) | 2020.01.14 |
---|---|
[REDIS] 나는 유휴 레디 스 클라이언트를 죽이지 않는 방법 (0) | 2020.01.14 |
[REDIS] 사용 노드 8 util.promisify와 노드 - 레디 스 (0) | 2020.01.14 |
[REDIS] 값없이 레디 스 저장소 키 (0) | 2020.01.14 |
[REDIS] 레디 스 단일 스레드 인 이유 (이벤트 구동) (0) | 2020.01.14 |