python實(shí)現(xiàn)LRU熱點(diǎn)緩存及原理
LRU
LRU(Least recently used,最近最少使用)算法根據(jù)數(shù)據(jù)的歷史訪問記錄來進(jìn)行淘汰數(shù)據(jù),其核心思想是“如果數(shù)據(jù)最近被訪問過,那么將來被訪問的幾率也更高”。
基于列表+Hash的LRU算法實(shí)現(xiàn)。
- 訪問某個(gè)熱點(diǎn)時(shí),先將其從原來的位置刪除,再將其插入列表的表頭
- 為使讀取及刪除操作的時(shí)間復(fù)雜度為O(1),使用hash存儲熱點(diǎn)的信息的鍵值
class LRUCaceh(): def __init__(self, size=5): ''' 默認(rèn)隊(duì)列的長度為5 使用列表來維護(hù),使用字典來查詢 ''' self.size = size self.cache = dict() self.key = [] def get(self, key): ''' 獲取緩存中的key的值 ''' if self.cache.get(key): self.key.remove(key) self.key.insert(0, key) return self.cache[key] return None def set(self, key, value): ''' 設(shè)置緩存,實(shí)現(xiàn)緩存淘汰 ''' if self.cache.get(key): self.cache.pop(key) self.cache[key] = value self.key.remove(key) self.key.insert(0, key) elif len(self.key) == self.size: old_key = self.key.pop() self.key.insert(0, key) self.cache.pop(old_key) self.cache[key] = value else: self.key.insert(0, key) self.cache[key] = value
總結(jié)
以上所述是小編給大家介紹的python實(shí)現(xiàn)LRU熱點(diǎn)緩存及原理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
python實(shí)現(xiàn)模擬器爬取抖音評論數(shù)據(jù)的示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)模擬器爬取抖音評論數(shù)據(jù)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01python讀取二進(jìn)制mnist實(shí)例詳解
這篇文章主要介紹了python讀取二進(jìn)制mnist實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05