实时在线设备统计应该保存在SQL,Redis Set还是Redis Sorted Set哪里更好?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

落地花开啦 2016-02-01 15:02:31 2139

之前我用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是否会锁表?

SQL JSON NoSQL 关系型数据库 MySQL Redis 数据库 数据格式
分享到
取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 18:37:09

    看题目上纠结的几点貌似既要求实时又要求能够分页查询,首先很重要的一点就是预估数据量,10K的设备不多,放DB也可以,而且在分页上面更有优势,但是由于设备会不停的上线下线,这样就涉及到频繁的对DB进行增加/删除操作,那就不太合适了。
    所以建议使用NoSql,也就是Redis,至于使用普通的Set还是有序集合嘛:
    Redis有序集合的插入需要维护集合的顺序,所以相对于普通集合操作效率较低,如果说需要分页的话,其实有序集合也就支持一种排序方式,真心不觉得使用有序集合能够便于分页,稍微修改下分页规则这个有序集合就没用了。
    综上推荐使用普通集合,如果需要进行分页查询,可以考虑将Redis中的数据定时同步到DB,然后进行查询,Redis中的数据主要用于计算实时在线设备数量。

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程