从redis集中获取随机元素,不重复

时间:2014-07-03 20:18:39

标签: javascript arrays node.js redis

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

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

在房间里还有一个循环( setInterval ),它从Redis中获取一名玩家并使该玩家成为“领导者”。

玩家按照设置存储在Redis中( rooms:ROOMID:online )。当用户加入房间时,我将他添加到此套装中。当用户离开时,我将他从集合中删除。

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

如何在没有DUPLICATE的情况下获得下一个用户,直到我手动停止循环,考虑到循环的每次迭代都可以改变集合(可以变小或变大,用户可以加入和离开)。

我想要的例子:集合中有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

注意:我不能从我的主套装SPOP(房间:ROOMID:在线)。

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

1 个答案:

答案 0 :(得分:0)

我建议你保留另一套,例如rooms:ROOMID:elected。与每个加入/同步事件上设置的rooms:ROOMID:online保持同步。来自它的SPOP,一旦它是空的,复制内容室:ROOMID:在线到它。