在Redis中查找副本集命令(或替代)

时间:2010-12-17 21:09:41

标签: redis

我是Redis的新手,我正在寻找一些特定的帮助。为了给出一些背景知识:我正在构建一个网络应用程序,其中包含大量的卡片组,每个卡片组都有一组带有唯一ID的单独卡片。我希望用户从特定的套牌中随机抽取一组5张卡片。

我的计划是将给定套牌的所有牌ID存储在Redis中作为一组;然后我想使用SPOP功能绘制单个卡并将其从集合中移除,以便它们不会在该手中再次绘制。通过将卡片组的卡片ID“主集”复制到一个新的临时集中,执行弹出复制然后在我完成时删除复制的集合,这似乎是有意义的。

但是:我找不到任何Redis函数来命令设置副本 - 我能看到的最接近的事情是创建一个空集然后'加入'空集和集合的'主副本'使用SUNIONSTORE进入一个新的(如果是临时的)设置,但这看起来很糟糕。我想另一种方法是将设置项复制到我的“宿主语言”(node.js)中,然后手动将项目插回到新的Redis集中,但这看起来也很笨重。可能还有一个我没想过的更好的第三种选择。

我做错了什么 - 我不是'得到'Redis,还是命令集仍然有点不成熟?

1 个答案:

答案 0 :(得分:62)

redis> sadd mydeck 1
(integer) 1
redis> sadd mydeck 2
(integer) 1
redis> sadd mydeck 3
(integer) 1
redis> smembers mydeck
1) "1"
2) "2"
3) "3"
redis> sunionstore tempdeck mydeck
(integer) 3
redis> smembers mydeck
1) "1"
2) "2"
3) "3"
redis> smembers tempdeck
1) "1"
2) "2"
3) "3"

与Redis玩得开心! 萨尔瓦多