问题: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 |