gpt4 book ai didi

javascript - 从redis集中获取随机元素而不重复

转载 作者:可可西里 更新时间:2023-11-01 11:41:54 25 4
gpt4 key购买 nike

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

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

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

玩家按集存储在 Redis 中(rooms:ROOMID:online)。当用户加入房间时,我将他添加到这个集合中。当用户离开时,我将他从集合中移除。

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

在我手动停止循环之前,如何在每次迭代中获取下一个用户而不重复,考虑到集合可能会在循环的每次迭代中发生变化(可以变小或变大,用户可以加入和离开)。

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

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。

抱歉我的英语不好,感谢您的帮助。

最佳答案

我建议您保留另一套,例如房间:ROOMID:已选择。使其与每个加入/同步事件上设置的 rooms:ROOMID:online 保持同步。从它 SPOP,一旦它是空的,复制内容 rooms:ROOMID:online 到它。

关于javascript - 从redis集中获取随机元素而不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24562643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com