猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
温温酱
浏览 2919
回答 2
2回答
慕神8447489
问题是什么数据?比如用户数据。数据库有2000w条。活跃用户:redis sortSet里 放两天内(为方便取一天内活跃用户)登录过的用户,登录一次ZADD一次,如set已存在则覆盖其分数(登录时间)。键:login:users,值:分数 时间戳、value userid。设置一个周期任务,比如每天03:00:00点删除sort set中前一天3点前的数据(保证set不无序增长、留近一天内活跃用户)。取时,拿到当前时间戳(int 10位),再减1天就可按分数范围取过去24h活跃用户。
0
0
0
慕的地10843
以 @ybak 的答案为基础,我说一个比较简单实用的方案。限定 Redis 占用的内存,Redis 会根据自身数据淘汰策略,加载热数据到内存。所以,计算一下 20W 数据大约占用的内存,然后设置一下 Redis 内存限制即可。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Redis
redis相比于rabbitmq,更通用对吗?
2 回答
redis中存储的是celery的定时任务,那么redis需要持久化吗?
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续