用JS实现一个LRU缓存
Posted 沿着路走到底
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用JS实现一个LRU缓存相关的知识,希望对你有一定的参考价值。
LRU缓存
Least Recently Used 最近使用
如果内存有限,只缓存最近使用的,删除 沉水 数据
即淘汰掉最近最少使用的数据,只保留最近经常使用的资源。它是一个固定容量的缓存容器。
核心API:get、set
const lruCache = new LRUCache(2); // 最大缓存长度 2
lruCache.set(1, 1); // 缓存是 1=1
lruCache.set(2, 2); // 缓存是 1=1, 2=2
lruCache.get(1); // 返回 1
lruCache.set(3, 3); // 该操作会使得关键字 2 作废,缓存是 1=1, 3=3
lruCache.get(2); // 返回 null
lruCache.set(4, 4); // 该操作会使得关键字 1 作废,缓存是 4=4, 3=3
lruCache.get(1); // 返回 null
lruCache.get(3); // 返回 3
lruCache.get(4); // 返回 4
分析
用哈希表存储数据,这样 get set 才够快 O(1)
必须是有序的,常用数据放在前面,沉水 数据放在后面
哈希表 + 有序,就是 Map
/**
* @description LRU cache
*/
export default class LRUCache
private length: number
private data: Map<any, any> = new Map()
constructor(length: number)
if (length < 1) throw new Err
以上是关于用JS实现一个LRU缓存的主要内容,如果未能解决你的问题,请参考以下文章