python实现缓存_python实现本地缓存

python简单模拟的本地轻量级缓存

思路:

字典的形式保存缓存数据,同时增加增加过期时间,如{'key':{'expire': 1524363282, 'data': 2}},但这样的话何时回收呢,如果单独起个程序扫描过期的数据清除key,貌似又过于复杂了,这里采用弱引用。

WeakValueDictionary的特性:如果value值没有强引用了,那么对应的记录就会被回收

所以还需要定义strongRef来强引用,并放入collections.deque来保持强引用,deque队列可定义大小,那么超过阀值的老元素就会被弹出,也就消除了强引用,也就会被马上回收

# coding: utf-8

import weakref, collections

class LocalCache():

notFound = object()

# list dict等不支持弱引用,但其子类支持,故这里包装了下

class Dict(dict):

def __del__(self):

pass

def __init__(self, maxlen=10):

self.weak = weakref.WeakValueDictionary()

self.strong = collections.deque(maxlen=maxlen)

@staticmethod

def nowTime():

return int(time.time())

def get(self, ke

你可能感兴趣的:(python实现缓存)