@alloc/quick-lru (英语)

简单 “最近使用的东北”缓存
这是通用JS唯一的叉 quick-lru。 。 。 .
当需要缓存一些东西并限制内存使用时有用.
见 算法区域 详细执行情况.
安装
$ npm install @alloc/quick-lru
使用量
const QuickLRU = require('@alloc/quick-lru');
const lru = new QuickLRU({maxSize: 1000});
lru.set('🦄', '🌈');
lru.has('🦄');
//=> true
lru.get('🦄');
//=> '🌈'
API 密码
新的快速路由( 选项 )
返回新实例 .
选项
类型 : object
最大大小
需求
类型 : number
在驱逐最近使用最少的物项之前设定的最大物项数量.
说明: 双切分算法在物理上最多可保留两次
maxSize基于性能原因的条目,即使报告的缓存大小不超过maxSize。 。 。 .
最大年龄
类型 : number
默认 : Infinity
一个项目应保留在缓存中的最大毫秒数. 默认最大年龄为无限, 这意味着项目永远不会过期 .
下回懒活会过期 write 或者说 read 电话.
物品的个别过期可由下列规定: set(key, value, options) 方法.
退出选举
可选
类型 : (key, value) => void
在某件物品因容量压力或TTL过期被从缓存中取出之前立即调用.
用于副作用或对象URL等需要明确清理的项目(revokeObjectURL) (中文(简体) ).
此回调不要求手动清除 delete() 或者说 clear()。 。 。 .
实例
事实就是 iterable 这样你就可以直接用在一个 for…of 循环.
两者 key 财务报告和审定财务报表 value 可以是任何类型的.
. set( 键、 值、 选项 )
设定项目 。 返回实例 .
一项物品的个别过期可注明为 maxAge 选项。 如果未具体说明,则全局 maxAge 如果在构建器上指定了值,则将使用值,否则项目永远不会过期.
.get(键)
拿件东西来.
. has( 键)
检查项目是否存在 .
.peek( 键)
得到一个没有标记 最近使用它.
终止 英寸( 键)
获得给定物品的剩余生活时间(以毫秒计),或 undefined 如果项目不在缓存中.
- 不标记最近使用的项目 .
- 不触发懒惰过期, 或删除过期时的条目 .
- 回返
Infinity如果项目没有过期. - 如果物品已经过期但尚未懒散取出, 可能返回负数 .
.删除( 键)
删除一个项目.
回返 true 如果物品被取出,或 false 如果项目不存在.
清晰( )
删除所有项目.
调整大小( 最大尺寸)
更新 maxSize,必要时丢弃物品。 插入顺序大多被保留下来,尽管这不是一个强有力的保证.
用于实时系统中缓存大小的即时调试.
. keys () (中文(简体) )
所有钥匙都可以用.
值( )
对所有的价值观都是可移动的.
上升( )
适用于所有条目,从最古老者开始(在调整时上升).
递增( )
适用于所有条目,从最新的条目开始(在调整后降级).
大小
所存项数.
算法
此库执行一个变体 hashlru 算法 使用两个 Map 对象。 一张地图持有最近添加或访问的条目,而另一张地图持有较旧的条目。 当最近的地图到达时 maxSize,它取代了更古老的地图,并创建了新的最近地图.
这样可以避免传统链接列表LRU要求的频繁删除操作,并支持任何类型的密钥和 undefined 数值。 两者的权衡是 这两张地图可以保持两倍的目标 maxSize 在旋转之间。 当临时内存管理费无法接受时使用严格的缓存大小 .