从Redis集合中获取随机元素,而不重复

斯拉瓦

我正在使用REDIS和Socket.io在Node.js上进行游戏。

我在这个游戏中有“房间”。房间里有1到9名球员。他们可以随时随地加入和离开。

此外,房间中还有一个循环(setInterval),该循环从Redis吸引一名玩家,并将其设为“领导者”。

存储在Redis中的玩家按设置(rooms:ROOMID:online)。当用户加入聊天室时,我将其添加到此集合中。当用户离开时,我将其从场景中移除。

也许这是一个愚蠢的问题,但是...

考虑到集合可能在循环的每次迭代中更改(可以变小或变大,用户可以加入并离开),因此如何在每次迭代中不重复地获取下一个用户,直到我手动停止循环为止。

我想要的示例:集合中有3个用户(0、1、2)

setInterval(function, 1000);

>0
>1
>2
> User 3 joined the room (added to set)
>0
>1
>2
>3
>0
>1
>2
> User 2 left the room (removed from set)
>3
>0
>1
>3
>...etc

注意:我不能从我的主要房间(rooms:ROOMID:online)中进行SPOP。

对不起,我的英语,谢谢您的帮助。

伊塔玛·哈伯(Itamar Haber)

我建议您保留另一套,例如rooms:ROOMID:electedrooms:ROOMID:online在每个加入/同步事件中,使其与设置保持同步。从中获取SPOP,然后将其清空,然后将内容房间:ROOMID:在线复制到它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从集合中获取随机元素

在重复的随机选择中不重复元素

如何从数组中获取随机元素而不重复并将其放入textarea

从列表中获取随机项目而不重复或重复 - Dart

获取不重复的随机坐标

数组中的随机项目,在 Javascript 中不重复元素

从顺序集合中获取随机元素

如何不重复地从数组中获取元素?

有序集合选择算法中的随机数不重复该集合中已经生成的选择吗?

如何从Swift中的集合中获取随机元素?

从集合中以随机顺序获取所有元素

如何从Smalltalk的集合中获取特定数量的随机元素?

在Javascript中显示随机图像而不重复

如何在Java中从集合中选择一些元素而不重复?

从数组中获取随机元素,而无需在Java中重复

如何从数据库中获取随机行,以便在多次调用中不重复行

添加重复项时从集合中获取原始元素

在不重复问题的情况下获取数组中的随机问题

获取Ruby中数组的随机非重复元素

从序列中获取唯一元素(彼此不重复的元素)

Python 3:从 numpy 数组中选择随机对元素而不重复

从集合中获取元素

从集合中获取元素

如何获取两个列表的公共元素并将其存储在新列表中而不重复

在div中获取节点而不重复

如何检查一个元素是否存在,以使其在C#的控件集合中不重复?

计算元素在序列(R)中重复或不重复的次数

为R中的每个组随机选择数字(不重复)

Python从文件中打印随机行而不重复