缓存淘汰算法和淘汰策略

常用淘汰算法

FIFO

1
2
First In First Out,先进先出
根据缓存被存储的时间,离当前最远的数据优先被淘汰

LRU

1
2
Least Recently Used,最近最少使用。
算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。

实现原理

1
2
3
1. 新数据插到链表头部
2. 每当缓存命中,则将数据移动到链表头部
3. 当链表满时,将链表尾部的数据丢弃

LFU

1
Least Frequently Used,最不经常使用算法,在一段时间内,数据被使用次数最少的,优先被淘汰

淘汰策略

摆烂型

noeviction

1
当内存限制达到时,谁也不删除,返回错误

针对所有key

allkeys-lru

1
尝试回收最少使用的键,使得新添加的数据有空间存放

allkey-random

1
回收随机的键,使得新添加的数据有空间存放

针对过期key

volatile-lru

1
尝试回收最少使用的键,使得新添加的数据有空间存放,但是仅限于在过期集合的键

volatile-random

1
回收随机的键,使得新添加的数据有空间存放,但仅限于过期集合的键

volatile-ttl

1
回收在过期集合的键,并且优先回收过期时间较短的键,使得新添加的数据有空间存放

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!