缓存淘汰策略(图解)

11 篇文章 0 订阅
4 篇文章 0 订阅
本文介绍了三种主要的缓存淘汰策略:FIFO(先进先出),LFU(最少频率使用)和LRU(最近最少使用)。FIFO基于数据进入缓存的顺序进行淘汰;LFU根据访问次数决定淘汰,而LRU则是依据数据最近被访问的时间来淘汰最久未使用的数据。
摘要由CSDN通过智能技术生成

缓存淘汰策略:

一,概念:

不管是本地缓存还是分布式缓存,为了保证系统的高性能和高可用,都是使用内存来存储数据的。随着时间的推移,缓存的数据越来越多,由于成本和内存的限制,当存储的数据超过缓存最大容量时,需要对缓存的数据进行淘汰。常用的缓存淘汰策略有FIFO(先进先出算法)、LFU(Least Frequently Used)、LRU(Least Recently Used)等。

二,分类:

先进先出算法(FIFO)

FIFO(First in First out),先进先出。在FIFO Cache设计中,核心原则就是:如果一个数据最先进入缓存中,则应该最早淘汰掉。

1、利用一个双向链表保存数据,

2、当来了新的数据之后便添加到链表末尾

3、如果Cache存满数据,则把链表头部数据删除,

4、然后把新的数据添加到链表末尾。

5、在访问数据的时候,如果在Cache中存在该数据的话,则返回对应的value值;

6、否则返回-1。如果想提高访问效率,可以利用hashmap来保存每个key在链表中对应的位置。

Least Frequently Used(LFU)

淘汰一定时期内被访问次数最少的页面,以次数作为参考

1、新加入数据插入到队列尾部(因为引用计数为1);

2、 队列中的数据被访问后,引用计数增加,队列重新排序;

3、当需要淘汰数据时,将已经排序的列表最后的数据块删除。

Least Recently Used(LRU)

淘汰最长时间未被使用的页面,以时间作为参考

1、新数据插入到链表头部;

2、每当缓存命中(即缓存数据被访问),则将数据移到链表头部;

3、当链表满的时候,将链表尾部的数据丢弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值