3
재 분류 된 정렬 집합을 정렬되지 않은 일반 집합으로 복사하려면 어떻게해야합니까? 이것을 할 수있는 redis 명령이 있습니까? 수동으로 정렬 된 집합을 반복하고 정렬되지 않은 집합에 수동으로 삽입 할 수 있지만이를 수행하는 더 좋은 방법이있는 것처럼 보입니다.집합에 재발행 정렬 집합 복사
재 분류 된 정렬 집합을 정렬되지 않은 일반 집합으로 복사하려면 어떻게해야합니까? 이것을 할 수있는 redis 명령이 있습니까? 수동으로 정렬 된 집합을 반복하고 정렬되지 않은 집합에 수동으로 삽입 할 수 있지만이를 수행하는 더 좋은 방법이있는 것처럼 보입니다.집합에 재발행 정렬 집합 복사
이 작업을 직접 수행 할 명령이 없다고 생각합니다.
그러나 서버에 정렬 작업을 수행하기 위해 간단한 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이며 첫 번째는 복사 대상으로 정렬되고 두 번째는 복사 대상으로 정렬됩니다.
아름다운 작은 oneliner. – Private