博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LRU算法
阅读量:6793 次
发布时间:2019-06-26

本文共 534 字,大约阅读时间需要 1 分钟。

LRU,Least recently used[最近最少使用算法],该算法【或变种】被广泛用于缓存管理中,其设计思想是基于:经常被访问的数据在未来一段时间也会被访问,最近最少被访问的数据在未来一段时间内也将不会被访问;因此在缓存空间不足时可将最近最少被访问的数据移除空间。

最初设计很简单,可如下图所示,只对一个链表进行操作:

缓存污染,即是数据操作中存在大量的数据插入和更新时,可能会使大量的热点数据流失而大大降低缓存命中率。

上述设计的优点:算法实现简单,

缺点:抗干扰能力差,缓存移动的时间复杂度为:O(n).

LRU-K算法,即数据被访问K次才会被放入LRU队列,至于放置的位置可放于队首,也可放于队中。要实现LRU-K算法,要维护一个数据访问历史队列以用于判断数据是否满足被访问K次的条件。大致可如下图所示:

该设计的优点:缓存抗干扰能力强,缓存命中率高。

缺点:增加了算法实现和维护的复杂度,算法的空间复杂度为2N,时间复杂度为2N。

另一种设计:可提供较强的缓存抗干扰能力,而且算法的实现比较简单,并且算法的空间复杂度为N,时间复杂度为1.设计思想见下图:

 

转载于:https://www.cnblogs.com/itdev/p/6079610.html

你可能感兴趣的文章
HDU 4609 3-idiots
查看>>
会计的思考(22):美丽会计
查看>>
'dataSource' or 'jdbcTemplate' is required异常
查看>>
类似微信美团的图片选择器的实现
查看>>
flask同源策略解决办法及flask-cors只允许特定域名跨域
查看>>
App性能测试-GT
查看>>
poj 3436 -- ACM Computer Factory
查看>>
linux-Centos7安装python3并与python2共存
查看>>
WinDriver问题.【转】WIN7以上版本,DbgPrint,KdPrint在Checked build 环境下没有输出
查看>>
poj 1222 (枚举)
查看>>
missing blocks错误
查看>>
umount命令详解
查看>>
Glossary
查看>>
Android之WifiManager
查看>>
Sharepoint环境下实现对Javascript的调试
查看>>
弱Bachet 定理的一个存在性证明
查看>>
ruby json解析&生成
查看>>
列表生成式
查看>>
Apache配置tomcat集群
查看>>
Python高级网络编程系列之第一篇
查看>>