栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

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

from redis import Redis as redisfrom time import timer1 = 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数据库中清除不活动的用户。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372903.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号