首页新闻找找看学习计划

Redis如何高效存储用户信息?

0
悬赏园豆:30 [待解决问题]

有一个这样场景:

每个用户需要统计一些数据,由于这些数据会经常变更,有些用户每天都在变化,而且每个数据如果直接用sql语句统计,会非常消耗时间,所以想把这些数据存入redis里面,请问各位:

这些数据是每个数据对应该一个key好一些还是统一用一个key存入hash中,

用户数有几百万条记录。

V青山绿水的主页 V青山绿水 | 初学一级 | 园豆:91
提问于:2018-11-21 14:50
< >
分享
所有回答(4)
0

你这个。。数据经常变动用redis也快不了多少吧,修改了还得更新缓存。。
a:b方式做key分层考虑过么?按你业务逻辑可以划分不同区域
还有方式是后台服务做统计分析,然后输出内容到某个表或者其他地方,每次获取直接从单表获取,这种方式实时性会差一些

rqx | 园豆:468 (菜鸟二级) | 2018-11-21 15:05

主要是用户数太多了,可能上达一千万用户,如果用后台服务器统计太费时间,这个我们是想先实时存入单独的表,再读入缓存,就是看存入缓存的方式是如何的

支持(0) 反对(0) V青山绿水 | 园豆:91 (初学一级) | 2018-11-21 15:56

@V青山绿水: 可以考虑插入的时候分库分表,冗余插入,根据业务统计需要插入,然后单表统计呢

支持(0) 反对(0) rqx | 园豆:468 (菜鸟二级) | 2018-11-21 19:18
0

用户表的数据那么大对于单表怎么操作都是很费劲的,建议分库分表实现,缓存不太现实,用缓存的话有可能造成其他的内存问题

番茄先生 | 园豆:867 (小虾三级) | 2018-11-21 17:28
0

放一片内存直接搞定,几百万光存这个数据量比较小
设id 4Byte,每个统计假设4Byte * 4;
20Byte*10000000/1024/1024=190MB

花飘水流兮 | 园豆:10574 (专家六级) | 2018-11-21 18:49
0

几百万的数据用redis存储问题不大,主要还是分析用户的数据结构及统计的维度,然后根据你的业务选择合适的redis数据结构就行存储,比如用户的基本信息(姓名,手机号等等)可采用hash存储,其他的数据可用list或者sorted sets 进行存储,sorted sets 里面的score是比较适合做统计的。

裁决余声 | 园豆:215 (菜鸟二级) | 2018-12-25 15:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册