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