关于 npm 中 lru-cache 之 maxAge 盲点 源码分析

本文深入探讨了LRU缓存中maxAge参数的作用机制,并解释了如何通过stale参数控制超时key-value的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面copy了一段实例

 

var LRU = require("lru-cache")
  , options = { max: 500
              , length: function (n, key) { return n * 2 + key.length }
              , dispose: function (key, n) { n.close() }
              , maxAge: 1000 * 60 * 60 }
  , cache = LRU(options)

 

我这段大家应该很熟悉了。maxAge 这个参数很容易给人产生误导,这里我详细说下maxAge。之前我一直认为 当set 完一个 key-value 后  超过 maxAge 设置的值时,LRU 会自动把 key-value 删掉。 然而经过一番分析后,事实不尽然~

 

首先maxAge   这个参数只有在set值和判断status的时候(isStale方法)进行校验。

 

而 isStale 这个方法   在取值,判断值和方法forEach中有用到

 

过期(超过maxAge)的值会通过del 方法删除,删除时执行 实例对象是设置的  dispose方法。

 

所以,maxAge 参数值有效,但是是在执行 get 和 forEach 时才会进行时间校验。超时则执行dispose方法。

 

而 对于超时的 key-value 是否 能取到值 ,取决于 设置的stale 参数。 

参数 maxAge, stale 参数默认

在get的时候  判断是否超时,如果超时,删除后返回undefined

 

参数 maxAge, stale 设置true

在get 的时候 判断是否超时, 如果超时, 删除后返回该值后。

 

欢迎吐槽,讨论。

转载于:https://www.cnblogs.com/fengpan/p/6002501.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值