LRUCache
LruCache是一种缓存策略,持有的是强引用,但是会控制在一个峰值下。它内部维护了一个队列,每当从中取出一个值时,该值就移动到队列的头部。当缓存已满而继续添加时,会将队列尾部的值移除
import collections
class LRUCache:
def __init__(self, capacity=128):
self.od = collections.OrderedDict()
self.capacity = capacity
def get(self, key):
if key in self.od:
val = self.od[key]
self.od.move_to_end(key)
return val
return -1
def put(self, key, value):
if key in self.od:
del self.od[key]
self.od[key] = value
else:
self.od[key] = value
if len(self.od) > self.capacity:
self.od.popitem(last=False)