정렬 된 집합을 사용하여 redis에서 여러 키 값을 얻으려면 어떻게해야합니까?REDIS - 여러 키 값 가져 오기
zadd Users 0 David
zadd Users 5 John
zadd Users 15 Linda
zrevrange Users 0 -1 withscores
두 명의 사용자가 있습니다.
'David'과 'Linda'키를 가진 사용자를 한 검색어로 어떻게 검색 할 수 있습니까?
정렬 된 집합을 사용하여 redis에서 여러 키 값을 얻으려면 어떻게해야합니까?REDIS - 여러 키 값 가져 오기
zadd Users 0 David
zadd Users 5 John
zadd Users 15 Linda
zrevrange Users 0 -1 withscores
두 명의 사용자가 있습니다.
'David'과 'Linda'키를 가진 사용자를 한 검색어로 어떻게 검색 할 수 있습니까?
Redis에서 새로운 명령을 도입하지 않고도이를 수행 할 수있는 방법.
예를 들어, 당신은 다음 임시 세트와 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에 임의의 수의 입력 매개 변수를 채울 수 있습니다.
이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.6
, 당신은 또한 마지막으로 당신이 원하는 입력 목록을 수용하고 그 결과를 반환 명령을 얻을 수있는 서버 측 루아 스크립트에 다음 줄을 래핑 할 수 스크립팅을 사용하여 쉽게 구현할 수 있다면 Redis에 명령이 추가됩니다.
하나의 명령으로 이것을 얻을 수 없습니다.
MULTI
ZSCORE Users David
ZSCORE Users Linda
EXEC
편집 : 당신이 할 수있는 가장 가까운 하나 개의 응답을 얻기 위해 다른 방법으로, 사용자의 점수 병렬 해시를 유지할 수 있고, 그것을 쿼리
여러가 있습니다HMGET UserScores David Linda
하나는 정렬 된 항목을 처리하기 때문에 정렬 된 집합을 사용합니다. 당신이 요구하는 것은 정렬 된 집합을 정렬 된 집합으로 사용하지 않는 것입니다. 정렬 순서에 신경 쓰지 않는다면, 정렬 된 집합이 당신이 찾고있는 집합이 아닌 것입니다. 이미 여러 개의 키를 검색 할 수 있지만 임의의 키는 검색 할 수 없습니다.
주요 목표가 여러 개의 임의의 키를 검색하는 경우 해시 및 hmget을 사용하십시오. 주된 필요가 정렬 된 집합에 액세스하는 것이면 정렬 된 집합을 사용하고 스크립팅 경로로 이동하거나 일련의 zscore 호출을 파이프 라인으로 이동하십시오.
당신은 레디 스 MGET 여기
redis> MGET key1 key2 nonexisting
1) "Hello"
2) "World"
3) (nil)
더 사용할 수 있습니다 http://redis.io/commands/mget
쉘에 멀티 라인 루아 스크립트를 어떻게 입력합니까? "eval"redis.call ('sadd', 'tmp', unpack (KEYS));'을 입력하고 Enter 키를 누른 다음 오류 (잘못된 인수)가 나타나면 끝내면 특수 문자가 필요합니까? 나머지 스크립트는 무엇입니까? – raffian
아니요, Redis-cli는 다중 행 스크립트를 허용하지 않습니다. –