用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

猜你喜欢

转载自blog.csdn.net/m0_38066007/article/details/124998405