LRU(Least Recently Used)是一種緩存淘汰策略,它刪除最近最少使用的項(xiàng)目以騰出空間。在 JavaScript 中,你可以實(shí)現(xiàn)一個(gè) LRU 緩存來管理數(shù)據(jù)坏为,以便在內(nèi)存有限的情況下,始終保留最常用的數(shù)據(jù)镊绪。
下面是一個(gè)簡單的 JavaScript LRU 緩存的實(shí)現(xiàn)匀伏,它使用 Map 來存儲(chǔ)數(shù)據(jù),并保持緩存的大小不超過指定的限制:
class LRUCache {
constructor(capacity) {
this.capacity = capacity;
this.cache = new Map();
}
get(key) {
if (this.cache.has(key)) {
// 將最近訪問的數(shù)據(jù)移到最前面
const value = this.cache.get(key);
this.cache.delete(key);
this.cache.set(key, value);
return value;
}
return -1; // 未找到
}
put(key, value) {
if (this.cache.has(key)) {
// 如果 key 存在蝴韭,更新值够颠,并將其移到最前面
this.cache.delete(key);
} else if (this.cache.size >= this.capacity) {
// 如果緩存已滿,刪除最舊的數(shù)據(jù)(最后一個(gè)數(shù)據(jù))
const firstKey = this.cache.keys().next().value;
this.cache.delete(firstKey);
}
this.cache.set(key, value);
}
}
這個(gè) LRUCache 類實(shí)現(xiàn)了一個(gè)簡單的 LRU 緩存榄鉴,通過 get 方法獲取數(shù)據(jù)并將數(shù)據(jù)移到最前面履磨,通過 put 方法添加數(shù)據(jù)并維護(hù)緩存大小不超過指定容量。你可以根據(jù)需要將這個(gè)基本示例擴(kuò)展為更復(fù)雜的緩存管理器庆尘,以滿足你的項(xiàng)目需求剃诅。