通常来说,Redis 一共有 6 种缓存淘汰策略,其中,常用的 allkeys-lru 和 volatile-lru 里面都提到了 LRU 的概念,实际上 LRU 就是缓存淘汰策略的基础算法。现在,就由 LRU 引出今天要说的话题:学习 LRU、LFU、FIFO 算法原理,了解缓存淘汰策略的真相。
正文
LRU、LFU、FIFO 算法的含义:
- FIFO:First In First Out,先进先出,淘汰最早被缓存的对象;
- LRU:Least Recently Used,淘汰最长时间未被使用的数据,以时间作为参考;
- LFU:Least Frequently Used,淘汰一定时期内被访问次数最少的数据,以次数作为参考;
这些算法在不同层次的缓存上执行时拥有不同的效率和代价,需根据具体场合选择最合适的一种。
1. FIFO
FIFO(First in First o