三种缓存淘汰策略

Posted vincentgwzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三种缓存淘汰策略相关的知识,希望对你有一定的参考价值。

1, FIFO

先进先出,底层是利用双向链表,新来的数据放到链表的尾部,如果链表塞满了就删除头部的。

 

2, LFU

最近最少使用算法。思路就是如果一个数据在最近一段时间内使用次数最少,那么将来一段时间使用的可能性也很少。

LFU 是基于访问次数的。

实现:两个HASHMAP, 一个是用来存储数据的, key-value. 一个是用来存储次数的, key-time. 

当访问一个key 的时候就在 key-time, 也就是的第二个hashmap 对应的time 加1.

删除的时候就寻找最少time 的那个。

 

3, LRU

least recently used

如果数据最近被访问过,那么将来访问的几率也很高。

实现:新增加的数据放到头部。每当缓存命中,就把数据放到尾部。删除的时候就删除尾部的数据

以上是关于三种缓存淘汰策略的主要内容,如果未能解决你的问题,请参考以下文章

06 | 链表(上):如何实现LRU缓存淘汰算法?

4. 链表和缓存淘汰策略

Redis的过期策略和内存淘汰策略

Redis的过期策略和内存淘汰策略

Redis的缓存淘汰策略LRU与LFU

缓存淘汰策略之LRU