问题:MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中都是热点数据?
ps.平常用 redis 作为 MySQL 的缓存,写写应用的 redis 读写接口,被问时一脸懵逼
ps.平常用 redis 作为 MySQL 的缓存,写写应用的 redis 读写接口,被问时一脸懵逼
1
lolizeppelin Jul 17, 2017 via Android
数据设置过期时间
每次访问都会延长生存时间 |
2
yidinghe Jul 17, 2017 via Android get 的时候重设 expire 时间,另外从 3.2.1 版本开始新增了 touch 命令。
|
3
nameldk Jul 17, 2017 感觉这个应该先设置 Redis 的 maxmemory ,然后再 设置 maxmemory-policy 为 allkeys-lru。让 Redis 自动移除数据,保留的数据为热点数据。
|
4
Takahashi Jul 18, 2017
|
5
wencan Jul 19, 2017
两种策略:
策略一: 假如 Mysql 数据库有 100 张表,其中 10 张表的数据是经常要访问的 写一个计划任务,隔段时间将 10 张表的数据同步到 redis 策略二: 依据查询条件生成 key 用 key 在 redis 找 value 如果 value 找不到,则使用查询条件向 mysql 查询,结果缓存 redis,并设置过期时间 不过这两种策略都不好控制 redis 数据为 20w |