[REDIS] 레디 스는 - 여러 키의 값을 취득합니다
REDIS레디 스는 - 여러 키의 값을 취득합니다
어떻게 소트 세트를 사용하여 레디 스에서 여러 키의 값을받을 수 있나요?
zadd Users 0 David
zadd Users 5 John
zadd Users 15 Linda
zrevrange Users 0 -1 withscores
이것은 두 사용자가있을 것입니다.
어떻게 키 '다윗'과 하나 개의 쿼리에서 '린다'와 사용자가 검색 할 수 있습니다?
해결법
-
==============================
1.레디 스에 새 명령을 도입하지 않고 그것을 할 수있는 여러 가지 방법이 있습니다.
레디 스에 새 명령을 도입하지 않고 그것을 할 수있는 여러 가지 방법이 있습니다.
예를 들어, 당신은 당신이 다음 임시 세트와 ZSET 사이의 교차점을 계산에 관심이있는 이름을 가진 임시 세트를 채울 수 있습니다 :
multi sadd tmp David Linda ... and more ... zinterstore res 2 tmp Users weights 0 1 zrange res 0 -1 withscores del tmp res exec
파이프 라인, 이것은 하나의 왕복을 생성합니다 당신은 TMP에 입력 매개 변수의 임의의 수를 채울 수 있습니다.
레디 스 2.6로, 당신은 마지막으로 입력 목록을 수용하고 원하는 결과를 반환 명령을 얻을 수있는 서버 측 루아 스크립트에이 라인을 포장 할 수 있습니다 :
eval "redis.call( 'sadd', 'tmp', unpack(KEYS) ); redis.call( 'zinterstore', 'res', 2, 'tmp', 'Users', 'weights', 0, 1 ); local res = redis.call( 'zrange', 'res', 0, -1, 'withscores' ); redis.call( 'del', 'res', 'tmp' ) ; return res " 2 David Linda
안전하게 쉽게 스크립트를 사용하여 구현 된 수 있다면 새로운 명령 레디 스에 추가되지 않습니다 가정 할 수있다.
-
==============================
2.당신은 레디 스 MGET을 사용할 수 있습니다
당신은 레디 스 MGET을 사용할 수 있습니다
redis> MGET key1 key2 nonexisting 1) "Hello" 2) "World" 3) (nil)
자세한 내용은 여기 http://redis.io/commands/mget
-
==============================
3.당신이 분류되어 아이템 거래를 원하기 때문에 하나는 소트 세트를 사용합니다. 당신은 무엇을 요구하는 것은 소트 세트로 정렬 된 세트를 사용하지 않는 것입니다. 당신이 정렬 순서 상관하지 않는 경우, 아마도 소트 세트는 당신이 찾고있는 것이 아니다. 이미 여러 키하지만, 임의없는 사람을 검색 할 수 있습니다.
당신이 분류되어 아이템 거래를 원하기 때문에 하나는 소트 세트를 사용합니다. 당신은 무엇을 요구하는 것은 소트 세트로 정렬 된 세트를 사용하지 않는 것입니다. 당신이 정렬 순서 상관하지 않는 경우, 아마도 소트 세트는 당신이 찾고있는 것이 아니다. 이미 여러 키하지만, 임의없는 사람을 검색 할 수 있습니다.
기본 목표는 여러 임의의 키를 검색 할 경우, 해시 및 hmget를 사용합니다. 기본 필요가 정렬 된 세트에 액세스하는 경우, 사용을 설정하고 스크립트 경로 또는 파이프 라인 zscore 전화의 일련의 이동 중 소트.
-
==============================
4.당신은 하나의 명령으로이를 얻을 수 없습니다. 가장 가까운 하나 개의 응답을 얻기 위해 수행 할 수 있습니다
당신은 하나의 명령으로이를 얻을 수 없습니다. 가장 가까운 하나 개의 응답을 얻기 위해 수행 할 수 있습니다
MULTI ZSCORE Users David ZSCORE Users Linda EXEC
편집 : 다른 방법으로, 사용자의 점수 병렬 해시 유지하고, 함께 조회 할 수 있습니다
HMGET UserScores David Linda
from https://stackoverflow.com/questions/10814828/redis-get-value-of-multiple-keys by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 멀티 코어 서버 클러스터와 socket.io를 사용하는 좋은 방법은? (0) | 2020.01.15 |
---|---|
[REDIS] 어떻게 autowire가 RedisTemplate <문자열, 롱> (0) | 2020.01.15 |
[REDIS] 레디 스에서 시계열 기억 (0) | 2020.01.14 |
[REDIS] Laravel 4 : 정의되지 않은 메서드 레디 스에 전화 : 연결 () (0) | 2020.01.14 |
[REDIS] 어떻게 루비에서 MULTI 블록 내부 레디 스에서 읽을 수 있습니까? (0) | 2020.01.14 |