LFU(Least frequently used)
LFU,最不经常使用算法,是一种缓存淘汰算法,淘汰一定时期内访问次数最少的数据。
LFU 数据结构实现
LFU 有两种实现方式,一是哈希表 + 平衡二叉树,二是双哈希表。以下以双哈希表的方案为例。
- 双哈希表方案需要维护两个哈希表以及一个最少频次使用计数 minFreq。
- 第一个哈希表是 freq_table,key 存储访问频次,value 是一个双向链表,双向链表的每一个节点包含3个元素:key, value 以及 freq。
- 第二个哈希表是 key_table,key 为双向链表中存储的 key,value 是对应的链表节点的指针。