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

这篇博客介绍了如何使用Python模拟实现一个简单的本地缓存系统,利用WeakValueDictionary进行弱引用管理,结合collections.deque限制强引用数量,达到自动回收过期数据的效果。通过装饰器实现函数级别的缓存功能,提高效率。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值