3
如何將redis中的排序集複製到常規未排序集中?有沒有可以做到這一點的redis命令?我可以手動遍歷有序集合並手動插入未排序集合,但似乎可能有更好的方法來做到這一點。將redis排序集複製到集
如何將redis中的排序集複製到常規未排序集中?有沒有可以做到這一點的redis命令?我可以手動遍歷有序集合並手動插入未排序集合,但似乎可能有更好的方法來做到這一點。將redis排序集複製到集
我不認爲有任何直接這樣做的命令。
但是,你可以編寫簡單的lua腳本來在服務器上完成它,而不是將已排序的集合內容下載到客戶端,然後將其推回到新集合。
Redis命令:
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定義腳本並返回其SHA散列,EVALSHA比執行。參數是2來表示2個鍵名稱如下,首先是排序設置爲複製,第二個設置爲複製到。
美麗的小oneliner。 – Private