一道 redis 面试题,被鄙视了

2017-07-17 19:48:07 +08:00
 revotu
问题:MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中都是热点数据?
ps.平常用 redis 作为 MySQL 的缓存,写写应用的 redis 读写接口,被问时一脸懵逼
4914 次点击
所在节点    程序员
5 条回复
lolizeppelin
2017-07-17 21:01:01 +08:00
数据设置过期时间
每次访问都会延长生存时间
yidinghe
2017-07-17 21:30:27 +08:00
get 的时候重设 expire 时间,另外从 3.2.1 版本开始新增了 touch 命令。
nameldk
2017-07-17 22:50:43 +08:00
感觉这个应该先设置 Redis 的 maxmemory ,然后再 设置 maxmemory-policy 为 allkeys-lru。让 Redis 自动移除数据,保留的数据为热点数据。
Takahashi
2017-07-18 12:40:41 +08:00
wencan
2017-07-19 09:01:57 +08:00
两种策略:
策略一:
假如 Mysql 数据库有 100 张表,其中 10 张表的数据是经常要访问的
写一个计划任务,隔段时间将 10 张表的数据同步到 redis

策略二:
依据查询条件生成 key
用 key 在 redis 找 value
如果 value 找不到,则使用查询条件向 mysql 查询,结果缓存 redis,并设置过期时间

不过这两种策略都不好控制 redis 数据为 20w

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/375979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX