LFU算法族:LFU-Aging(LFUDA)算法

LFU算法族相关文章目录汇总:

LFU算法

LFU-Aging算法(本文)

window-LFU算法

1、原理

    LFUDA(LFU with dynamic aging),是LFU算法对于缓存污染问题的优化算法。它为缓存引用次数增加了“时间因子”的概念,用来适应缓存使用场景的变化。

    LFUDA并没有真的为每次引用记录一个时间,这样开销太大的。LFUDA是通过引入了引用次数的“老化”机制来引入“时间因子”的。LFU会动态持有一个平均引用次数,数值是当前所有缓存引用次数的平均值。当平均引用次数超过了一个预定义的门限时,会给每个引用减少引用次数。为每个应用减少访问次数的策略是灵活的、可扩展的,可以使用减少固定值、减少百分比等各种合适的策略。

    参考论文: A Web Proxy Cache Coherency and Replacement Approach 

2、数据结构

    和LFU是一致的:LFU算法,一般也会维护两个数据结构:

  • 哈希:用来提供对外部的访问,查询效率更高;
  • 双向链表或队列:维护了对元素访问次数的排序

    不同的地方在于,每次缓存淘汰,都需要检查是否需要对缓存引用次数进行老化;如果需要老化,则执行老化操作。缓存老化后双向链表或队列中的元素顺序是否会产生变化,取决于引用次数的老化策略。

3、优缺点

3.1 优点

  • 和LFU算法相比,LFU-Aging一定程度上解决了缓存污染的问题。当访问缓存的场景发生变化时,LFU-Aging可以更快适应,缓存的命中率更高

3.2 缺点

  • 复杂度:LFU-Aging在LFU的基础上增加平均引用次数判断和处理,实现上更复杂;
  • 处理器开销:平均引用次数达到门限时,需要遍历队列或链表,执行引用次数老化策略,这会带来一定的开销
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值