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存儲(chǔ)熱點(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)緩存及原理,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
pytorch如何凍結(jié)某層參數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了pytorch如何凍結(jié)某層參數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
基于python+selenium自動(dòng)健康打卡的實(shí)現(xiàn)代碼
這篇文章主要介紹了基于python+selenium自動(dòng)健康打卡,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Python使用OpenPyXL庫操作Excel表的操作指南
在現(xiàn)代辦公中,Excel表格無疑是處理數(shù)據(jù)、生成報(bào)告和分析信息的得力助手,無論是財(cái)務(wù)統(tǒng)計(jì)、數(shù)據(jù)整理還是業(yè)務(wù)分析,Excel 都扮演著不可或缺的角色,然而,手動(dòng)處理Excel表格既費(fèi)時(shí)又容易出錯(cuò),故本文給大家介紹了Python使用OpenPyXL庫操作Excel表的操作指南2024-11-11
python 根據(jù)csv表頭、列號(hào)讀取數(shù)據(jù)的實(shí)現(xiàn)
這篇文章主要介紹了python 根據(jù)csv表頭、列號(hào)讀取數(shù)據(jù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05

