关于在线离线这种实时状态,应该怎么保存?怎么设计比较方便查询?

现在有个需求,有控制器桌面端,会和后台建立心跳,保持则在线,断开离线(还有其它状态,禁用等)。

目前有需求根据在线离线等状态进行查询这些控制器列表。目前是把在线离线放在redis中,但是没有定时同步到数据库里面。

问题来了,控制器有归属用户(用户,部门,单位),查询时会根据权限来进行匹配。那么现在如何能比较实时的查询出在线离线的列表了?

现在的做法比较笨,在reids中存hash,分别是key,控制器id,控制器相关值的列表(用户,部门,单位,在线状态),如果查询在线或离线状态时,会把hash取下来遍历筛选出在线或离线的控制器id,再进行数据库 in 查其它字段。

大佬们有更好的设计方法吗?总感觉要遍历很不好。考虑过重新设计redis用权限字段做key,但是考虑到查询要模糊查询(管理员之类的),并且后续状态也不是很好维护,没有这样改造。

阅读 3.1k
1 个回答

弄一张online表不方便吗。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题