您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何清理Redis中不活跃的玩家?

如何清理Redis中不活跃的玩家?

也许使用 单独的 redis数据结构(尽管使用相同的数据库)来跟踪用户活动和用户位置。

例如,使用 分别跟踪当前在线的用户

[我的代码段是在Python中使用redis-python绑定,并改编自Flask(python micro- framework)中的示例应用;示例应用程序和框架均由Armin Ronacher撰写。]

from redis import Redis as redis
from time import time

r1 = redis(db=1)

调用下面的函数时,它将基于当前的UNIX时间(以分钟为单位)创建密钥,然后将用户添加到具有该密钥的集合中。我想您会希望将到期时间设置为10分钟,所以在任何给定时间,您都有10个有效键(每分钟1个)。

def record_online(player_id):
    current_time = int(time.time())
    expires = Now + 600     # 10 minutes TTL
    k1 = "playersOnline:{0}".format(Now//60)
    r1.sadd(k1, player_id)
    r1.expire(k1, expires)

因此,要使所有活动用户只需 所有活动键(在此示例中,即为10个键,一个纯粹的任意数字),如下所示:

def active_users(listOfKeys):
    return r1.sunion(listOfKeys)

这通过TTL解决了您的“清理”问题- 闲置的用户不会出现在您的活动键中,因为它们不断循环使用-即,在活动的用户中,它们仅使用旧时间戳记,在此示例中不存在(但也许会在到期前通过redis写入永久性存储)。无论如何,这将从活动的redis数据库中清除不活动的用户

其他 2022/1/1 18:17:18 有535人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶