现在有个需求,有控制器桌面端,会和后台建立心跳,保持则在线,断开离线(还有其它状态,禁用等)。
目前有需求根据在线离线等状态进行查询这些控制器列表。目前是把在线离线放在redis中,但是没有定时同步到数据库里面。
问题来了,控制器有归属用户(用户,部门,单位),查询时会根据权限来进行匹配。那么现在如何能比较实时的查询出在线离线的列表了?
现在的做法比较笨,在reids中存hash,分别是key,控制器id,控制器相关值的列表(用户,部门,单位,在线状态),如果查询在线或离线状态时,会把hash取下来遍历筛选出在线或离线的控制器id,再进行数据库 in 查其它字段。
大佬们有更好的设计方法吗?总感觉要遍历很不好。考虑过重新设计redis用权限字段做key,但是考虑到查询要模糊查询(管理员之类的),并且后续状态也不是很好维护,没有这样改造。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…