2013-01-12 3 views
3

재 분류 된 정렬 집합을 정렬되지 않은 일반 집합으로 복사하려면 어떻게해야합니까? 이것을 할 수있는 redis 명령이 있습니까? 수동으로 정렬 된 집합을 반복하고 정렬되지 않은 집합에 수동으로 삽입 할 수 있지만이를 수행하는 더 좋은 방법이있는 것처럼 보입니다.집합에 재발행 정렬 집합 복사

답변

4

이 작업을 직접 수행 할 명령이 없다고 생각합니다.

그러나 서버에 정렬 작업을 수행하기 위해 간단한 lua 스크립트를 작성하여 정렬 된 세트 컨텐츠를 클라이언트로 다운로드 한 다음 새 세트로 다시 푸시 할 수 있습니다.

레디 스 명령 :

SCRIPT LOAD "for i,v in ipairs(redis.call('zrange', KEYS[1], 0, -1)) do redis.call('sadd', KEYS[2], v) end" 
ZADD zset 1 first 
ZADD zset 2 second 
ZADD zset 3 third 
EVALSHA dd1c22a22108d758b93c26eb92d1ef2933cec314 2 zset set 
SMEMBERS set 

결과 :

"dd1c22a22108d758b93c26eb92d1ef2933cec314" 
(integer) 0 
(integer) 0 
(integer) 0 
(nil) 
1) "second" 
2) "first" 
3) "third" 

SCRIPT의 LOAD 스크립트를 정의하고 그 샤 해시, 실행하는 것보다 EVALSHA를 반환합니다. 인수는 2 개의 키 이름이 뒤 따르는 것을 나타 내기 위해 2이며 첫 번째는 복사 대상으로 정렬되고 두 번째는 복사 대상으로 정렬됩니다.

+0

아름다운 작은 oneliner. – Private