缓存淘汰算法和淘汰策略
常用淘汰算法
FIFO
| First In First Out,先进先出 根据缓存被存储的时间,离当前最远的数据优先被淘汰
|
LRU
1 2
| Least Recently Used,最近最少使用。 算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
|
实现原理
1 2 3
| 1. 新数据插到链表头部 2. 每当缓存命中,则将数据移动到链表头部 3. 当链表满时,将链表尾部的数据丢弃
|
LFU
1
| Least Frequently Used,最不经常使用算法,在一段时间内,数据被使用次数最少的,优先被淘汰
|
淘汰策略
摆烂型
noeviction
针对所有key
allkeys-lru
1
| 尝试回收最少使用的键,使得新添加的数据有空间存放
|
allkey-random
针对过期key
volatile-lru
1
| 尝试回收最少使用的键,使得新添加的数据有空间存放,但是仅限于在过期集合的键
|
volatile-random
1
| 回收随机的键,使得新添加的数据有空间存放,但仅限于过期集合的键
|
volatile-ttl
1
| 回收在过期集合的键,并且优先回收过期时间较短的键,使得新添加的数据有空间存放
|