Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.8k views
in Technique[技术] by (71.8m points)

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

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

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

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

弄一张online表不方便吗。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...