缓存算法

Posted qhdxqxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存算法相关的知识,希望对你有一定的参考价值。

在实现缓存算法的时候,通常会考虑使用频率获取成本缓存容量时间等因素。

Least-Recently-Used(LRU)

替换掉最近被请求最少的对象,也就是淘汰最长时间未被使用的对象。该算法可以通过跟踪对象的最后访问时间并依据最后访问时间排序实现。

Least-Frequently-Used(LFU)

替换掉访问次数最少的缓存,也就是淘汰一定时间内呗访问次数最少的对象。该算法可以通过跟踪对象在指定时间段内的访问次数并根据访问次数排序实现。

Least-Recently-Used(LRU2)

把被两次访问过的对象放入缓存池。当缓存池满了之后,会把有两次最少使用的缓存对象去除。

Two Queues(2Q)

把被访问的数据放到LRU的缓存中,如果这个对象再一次被访问,就把他转移到第二个、更大的LRU缓存。

SIZE

替换占用空间最大的对象。

LRU-Threshold

不缓存超过某一size的对象。

Log(Size)+LRU

替换size最大的对象,当size相同时,按LRU进行替换。

Hyper-G

LFU的改进版,同时考虑上次访问时间和对象size。

Pitkow/Recker

替换最近最少使用的对象,除非所有对象都是今天访问过的。如果是这样,则替换掉最大的对象。

Lowest-Latency-First

替换下载时间最少的文档。

Hybrid Hybrid

减少平均延迟。对缓存中的每个文档都会计算一个保留效用,保留效用最低的对象会被替换掉。

Lowest Relative Value(LRV)

LRV也是基于计算缓存中文档的保留效用,然后替换保留效用最低的文档。

Adaptive Replacement Cache(ARC)

介于LRU和LFU之间,由两个LRU组成,第一个包含的条目是最近只被使用过一次的,而第二个LRU包含的是最近被使用过两次的条目。

Most Recently Used(MRU)

移除最近最多被使用的对象。

First in First out(FIFO)

FIFO通过一个队列去跟踪所有的缓存对象,当缓存容量满时,排在前面的缓存对象会被剔除。

Random Cache

随机的替换缓存数据。

以上是关于缓存算法的主要内容,如果未能解决你的问题,请参考以下文章

缓存淘汰算法之2Q

Java 实现 LRU 缓存算法

缓存淘汰算法系列

缓存淘汰算法

缓存淘汰算法系列

缓存淘汰算法--LRU算法