为了账号安全,请及时绑定邮箱和手机立即绑定

mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?

mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?

温温酱 2018-07-26 18:18:54
mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

问题是什么数据?

比如用户数据。数据库有2000w条。
活跃用户:
redis sortSet里 放两天内(为方便取一天内活跃用户)登录过的用户,登录一次ZADD一次,如set已存在则覆盖其分数(登录时间)。键:login:users,值:分数 时间戳、value userid。设置一个周期任务,比如每天03:00:00点删除sort set中前一天3点前的数据(保证set不无序增长、留近一天内活跃用户)。

取时,拿到当前时间戳(int 10位),再减1天就可按分数范围取过去24h活跃用户。


查看完整回答
反对 回复 2018-07-30
?
慕的地10843

TA贡献1785条经验 获得超8个赞

以 @ybak 的答案为基础,我说一个比较简单实用的方案。

限定 Redis 占用的内存,Redis 会根据自身数据淘汰策略,加载热数据到内存。
所以,计算一下 20W 数据大约占用的内存,然后设置一下 Redis 内存限制即可。


查看完整回答
反对 回复 2018-07-30
  • 2 回答
  • 0 关注
  • 2819 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信