几种缓存算法


LRU (Least Recently Used 最近最少使用)
不断将最近使用的对象放到列表的顶部,这样最近最少使用的对象就会慢慢沉到底部,当容量不足的时候,可以将底部的对象去除,以留出空间给新的对象。

LRU-2
LRU-2算法是LRU算法的一个优化算法。LRU会将最近访问过的对象放置到顶部,但是有时候一次访问不能代表缓存之后会被继续访问,所以后来增加了一个阈值,当访问达到一定次数之后才会加入到缓存列表的顶部。未达到阈值的对象会暂时缓存在另外一张表中,基于LRU算法更新。阀值可以设置为2,3,4等等,但是通过实践后发现阀值设置为2有更好的适用性,所以一般都使用2作为阀值

FIFO(First In First Out  先进先出)
FIFO是将管理一个缓存列表,将先生成的缓存放在前面,最近生成的缓存放在列表的后面。当缓存空间满的时候,将最早生成的缓存去除。该算法很简单,但是缓存效果不好。

LFU(Least Frequently Used 最不经常使用)
LFU是给每个缓存对象设置一个缓存频率,当缓存空间不足时,将最少使用的缓存对象去除。当遇到某些缓存对象之前历史上使用频率很高,但是之后不再使用时,这种算法会导致没有价值的缓存长期在缓存中驻留,导致实际可用的缓存空间减少。

RAND(Random Algorithm)
当缓存空间不足时,系统通过一个随机值删除缓存空间中的随机一个缓存对象。这种算法也是比较简单的,但是命中率很低。

OPT(Optimal Replacement Algorithm 最优替换)
当缓存空间不足时,系统将未来最不可能被使用的缓存对象除去。这是最好的算法,唯一的缺点是无法实现。

参考文档:

https://my.oschina.net/jiangch/blog/678491

http://blog.csdn.net/appletreesujie/article/details/8262959

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值