LRU快取的js實現

2021-08-19 21:31:29 字數 1710 閱讀 5712

lru(least recently used,最近最少使用)演算法根據資料的歷史訪問記錄來進行淘汰資料,其核心思想是「如果資料最近被訪問過,那麼將來被訪問的機率也更高」。

最常見的實現是使用乙個鍊錶儲存快取資料,詳細演算法實現如下:

新資料插入到鍊錶頭部;

每當快取命中(即快取資料被訪問),則將資料移到鍊錶頭部;

當鍊表滿的時候,將鍊錶尾部的資料丟棄。

function

node

(value, next)

function

lrucache

(initialcapacity, initialvalue)

} //是否為空

lrucache.prototype.isempty = function

() ;

//在頭部做新增

lrucache.prototype.addfirst = function

(obj) else

this.size++;

newnode = null;

};

//在尾部做刪除

lrucache.prototype.removelast = function

()

this.size--;

} };

//將節點向頭部移動

lrucache.prototype.moveforward = function

(key)

};

//快取元素

lrucache.prototype.cache = function

(key, value) else ;

obj[key] = value;

this.addfirst(obj);

var that = this;

object.defineproperty(this, key, ,

get : function

() ,

configurable : true,

enumerable : true

});

//超出容量的話,將最少使用的刪除

if (this.size > this.capacity)

} //可以鏈式呼叫

return

this;

};

//刪除元素

lrucache.prototype.del = function

(key)

previous = cur;

} if (previous)

} else

} if (this.hasownproperty(key)) else

};

//查詢元素

參考:

Lru快取的簡單實現

最近最少使用演算法設計的map快取 使用linkedhashmap特性,完成當快取超過指定容量時,擠掉最久未使用的資源。具體編寫的工具類如下 一 cache類 繼承linkedhashmap 用於儲存資料 class cache extends linkedhashmap 取得元素耗費儲存空間大小 ...

LRU快取機制實現

題目描述 設計lru快取結構,該結構在構造時確定大小,假設大小為k,並有如下兩個功能 set key,value 將記錄 key,value 插入該結構 get key 返回key對應的value值 要求 set和get方法的時間複雜度為o 1 某個key的set或get操作一旦發生,認為這個key...

快取 LRU演算法實現

以下是基於雙向鍊錶 hashmap的lru演算法實現,對演算法的解釋如下 設定乙個map存放對應的鍵和值,同時設定乙個雙向鍊錶,來儲存最近最久未使用的關係,如果訪問乙個鍵,鍵存在於map中,訪問完成後,我們在鍊錶中將該鍵刪除,然後將其新增到鍊錶的首部,表示最近剛訪問過這個鍵,當快取滿了後,如果要新增...