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