- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在制作一款使用 Redis 存储游戏状态的游戏。它可以很好地跟踪位置和玩家,但我没有清理不活跃玩家的好方法。
每次玩家移动时(这是一个半慢速移动游戏。想想每秒 1-5 帧),我用新位置更新散列并删除旧位置键。
跟踪活跃玩家的最佳方式是什么?我想到了以下几点
还有其他想法吗?
最佳答案
也许使用单独的 redis 数据结构(尽管是同一个数据库)来跟踪用户事件和用户位置。
例如,使用redis sets单独跟踪当前在线的用户:
[我的代码片段是在 python 中使用 redis-python 绑定(bind),并改编自 example app在 Flask(python 微框架)中; Armin Ronacher 的示例应用程序和框架。]
from redis import Redis as redis
from time import time
r1 = redis(db=1)
当调用下面的函数时,它会根据当前的 unix 时间(以分钟为单位)创建一个键然后将用户添加到具有该 key 的集合中。我想你会想要将到期时间设置为 10 分钟,因此在任何给定时间,您都有 10 个 key (每分钟一个)。
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)
因此,要让所有活跃用户联合所有事件 key (在本例中,即 10键,一个纯粹的任意数字),像这样:
def active_users(listOfKeys):
return r1.sunion(listOfKeys)
由于 TTL,这解决了您的“清理”问题——非事件用户不会出现在您的实时 key 中,因为它们不断循环——即,在事件用户中,只键入不持久的旧时间戳在这个例子中(但可能在到期前被 redis 写入永久存储)。无论如何,这会从您的事件 redis 数据库中清除非事件用户。
关于redis - 如何清理redis中不活跃的玩家?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9578420/
尝试根据 :server-name 在请求中返回的内容加载特定模板: (ns rosay.views.common (:use noir.core) (:require [noir.reque
我想检查谁是活跃用户(过去 7 天都登录过)以及谁是非活跃用户(过去 7 天没有登录过)。我有 2 个表用户和机构。用户表结构如下: id | first_name | email | agency
我的 CSS 有问题。我试图将事件类设置为在垂直菜单上以粉红色突出显示,但事实并非如此。我如何在没有用户悬停在它上面的情况下保持它点亮。这是我的 HTML 和 CSS。 HTML 代码:
我有一个 Tile,当它处于 Activity 状态时,会运行一个计时器,在这五分钟内执行一项任务,然后在一定时间后返回到非 Activity 状态。 但是,我遇到的问题是服务被终止了。当所述计时器启
我已经知道如何在点击类(class)时激活它,但是当我将鼠标悬停在特定区域时如何激活类(class)? 这里是点击时获取事件类的代码: >Contact 是不是这样的: $('').hover(
我在使用 screen 时遇到问题。我知道 screen session 在主进程工作时工作,但我怎样才能让这个 session 保持事件状态?我需要这个,因为 session 关闭时有一些子进程被杀
我有一个 session 超时为 15 分钟的站点。在某些页面上,用户有时会花费超过 15 分钟的时间来填写回复。在这种情况下,使 session 保持事件状态的最佳解决方案是什么? 我已经在这些页面
我正在网页(在弹出窗口中)检查用户状态 - 他是活跃的还是空闲的。如果他空闲超过 30 分钟,窗口将自动关闭并重置数据库中的一些标志。 我设置了包含时间的 cookie(他打开弹出窗口的时间),并在每
由于某种原因,Jenkins 一直停止工作,我必须重新启动 jenkins 服务才能使其再次工作。每次发生这种情况时,服务都是“事件(退出)”,但日志中没有任何内容。我使用 Ubuntu 16.04。
我有一个幻灯片,需要单击它才能转到下一个图像/视频。但是,我想自动执行此操作,因此不需要任何用户事件。 页面如下所示: Slide 1 Slide 2 Slide
我正在使用 C# 应用程序来验证和检查位于 Window 2008 64 位服务器上的 Active Directory 用户。 使用以下代码提供用户名和密码时,我能够成功验证用户:我的域名值为 ro
这个问题在这里已经有了答案: Is there a CSS parent selector? (33 个答案) 关闭 9 年前。 有没有办法根据类中子元素的类来选择父元素?与我相关的示例是关于 ht
我正在尝试连接到 API,对用户进行身份验证,然后查看用户详细信息。这是通过首先访问登录端点来完成的 http://api.example.com/login// 登录然后查看用户详细信息: http
我正在尝试连接到 API,对用户进行身份验证,然后查看用户详细信息。这是通过首先访问登录端点来完成的 http://api.example.com/login// 登录然后查看用户详细信息: http
我是一名优秀的程序员,十分优秀!