现在有一个需求,需要记录用户每天的签到,这个时间可能会持续好几年,还要统计活跃用户等数据,用户体量比较大
现在想的是,用户签到数据直接存 key/value
,这样一年内,每个用户就有365条数据,在用户体量很大的情况下,内存消耗不起
有没有比较好的解决办法?
现在有一个需求,需要记录用户每天的签到,这个时间可能会持续好几年,还要统计活跃用户等数据,用户体量比较大
现在想的是,用户签到数据直接存 key/value
,这样一年内,每个用户就有365条数据,在用户体量很大的情况下,内存消耗不起
有没有比较好的解决办法?
用户体量有多大?
你这个冷数据为啥要放在redis里面,用mysql分库分表就可以了,这种场景特别适合按年拆分,没有几个用户会去看我的历史签到记录,比如去年11月11日我是几点几分签到,这种场景真的太少了
对于mysql来说冷数据存储最划算,硬盘便宜,分表以后也没啥性能损失
如果真的有强烈的查询历史数据需求,那就放mongodb
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
3 回答4.1k 阅读✓ 已解决
4 回答1.8k 阅读
4 回答1.5k 阅读
1 回答868 阅读✓ 已解决
1 回答1.5k 阅读
2 回答791 阅读
3 回答626 阅读
用redis的bitmap数据结构,以用户和年作为key,以每一天为偏移量,不计算key的长度一年只要365bit的空间,也就是365bit/8=46byte