开发者社区> 问答> 正文

实时在线设备统计应该保存在SQL,Redis Set还是Redis Sorted Set?

之前我用Redis保存实时采集的数据,现在需要额外的数据结构记录实时在线设备。

传统MySQL数据库,
onConnectionMade(),更新SQL数据库;
onConnectionLost(),更新SQL数据库;

Redis Set,
onConnectionMode(),在online(set)中增加对应设备SNR;
onConnectionLost(),在online(set)中删除对应设备SNR;

Redis Sorted Set,
onConnectionMode(),在online(set)中增加对应设备SNR;
onConnectionLost(),在online(set)中删除对应设备SNR;

我纠结以下问题:

1.采用Sorted Set固然好处比较多,但却是Redis最复杂的数据类型,不知道会占用多少资源?10K设备,每个SNR大约16字节。

2.如果采用Set,如果采用分页显示设备清单,如果10K设备,即使采用JSON,是否一次返回太多数据?好像缺乏range和通配符之类的操作。

3.此类操作是否SQL更有优势?毕竟长连接情况下,更新频率不高。

4.如果重启服务器,那么这个数据库表需要清表,Redis下操作简单,但是SQL是否会锁表?

展开
收起
爵霸 2016-03-09 10:16:23 4012 0
1 条回答
写回答
取消 提交回答
  • hello, 最近正在做这方面的工作,就是统计websocket的在线连接数量,一开始也是统计在redis的,后来采用日志对接storm实时处理去做了。因为一旦在多进程多机器的集群模式下,不管是数据库还是redis缓存,复杂度就很高了,某一个进程崩溃了,怎么清空他对应的连接呢?用最小的成本去解决这个问题就是在连接创建跟关闭的时候在日志里面打印出自己的连接数。
    storm平台实时收集日志就可以计算出总的在线连接了,并且可以动态扩展伸缩进程和集群数量,这是数据库跟缓存不好实现的地方。

    2019-07-17 18:55:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载