80.MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?

在 「Redis 有哪几种数据“淘汰”策略?」问题中,我们已经看到,“Redis 内存数据集大小上升到一定 maxmemory 的时候,就会进行数据淘汰策略。” 。

那么,如果我们此时要保证热点数据不被淘汰,那么需要选择 volatile-lru 或 allkeys-lru 这两个基于 LRU 算法的淘汰策略。

相比较来说,最终会选择 allkeys-lru 淘汰策略。原因是,如果我们的应用对缓存的访问符合幂律分布,也就是存在相对热点数据,或者我们不太清楚我们应用的缓存访问分布状况,我们可以选择 allkeys-lru 策略。如果在 Redis 4.0 版本,可以考虑使用 volatile-lfu ,更加符合“热”的概念,频率越高,代表越热。