首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将redis排序的集合复制到一个集合

将redis排序的集合复制到一个集合
EN

Stack Overflow用户
提问于 2013-01-13 04:30:29
回答 1查看 2.2K关注 0票数 4

如何将redis中的已排序集复制到常规的未排序集?有没有可以做到这一点的redis命令?我可以手动迭代已排序的集合,并在未排序的集合中手动插入,但似乎有一种更好的方法可以做到这一点。

EN

回答 1

Stack Overflow用户

发布于 2013-01-13 07:45:56

我不认为有任何命令可以直接做到这一点。

但您可以编写简单的lua脚本在服务器上执行此操作,而不是将排序的set内容下载到客户端,然后将其推送回新的set。

Redis命令:

代码语言:javascript
运行
复制
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

结果:

代码语言:javascript
运行
复制
"dd1c22a22108d758b93c26eb92d1ef2933cec314"
(integer) 0
(integer) 0
(integer) 0
(nil)
1) "second"
2) "first"
3) "third"

脚本加载定义脚本,并返回其sha散列EVALSHA,然后执行。参数是2,表示后面跟有2个键名,第一个排序设置为copy from,第二个设置为copy to。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14297671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档