1. 程式人生 > >Python實現LRU快取模擬

Python實現LRU快取模擬

LRU
LRU(Least recently used,最近最少使用)演算法根據資料的歷史訪問記錄來進行淘汰資料,其核心思想是“如果資料最近被訪問過,那麼將來被訪問的機率也更高”。
實現原理
利用list記錄key的次序,每次set,或get操作將key插入到list首位。
緩衝區滿之後再出現set操作,移除末尾的key。
使用Python3 ,key in dict判斷key是否出現過,Python2中應該為has_key

class LRUcache:
    def __init__(self, size=3):
        self.cache = {}
        self.keys = []
        self.size = size

    def
get(self, key):
if key in self.cache: self.keys.remove(key) self.keys.insert(0, key) return self.cache[key] else: return None def set(self, key, value): if key in self.cache: self.keys.remove(key) self.keys.insert(0
, key) self.cache[key] = value elif len(self.keys) == self.size: old = self.keys.pop() self.cache.pop(old) self.keys.insert(0, key) self.cache[key] = value else: self.keys.insert(0, key) self.cache[key] = value if
__name__ == '__main__': test = LRUcache() test.set('a',2) test.set('b',2) test.set('c',2) test.set('d',2) test.set('e',2) test.set('f',2) print(test.get('c')) print(test.get('b')) print(test.get('a'))

預期輸出為
None
None
None