给代码加速之用python实现一个带时间过期的LRU缓存 !

本文介绍了如何使用Python实现一个带有时间过期功能的LRU缓存,旨在解决后端数据更新时缓存清理的问题。通过设置过期时间,既能避免频繁清空所有缓存,又能确保在允许短时间内使用脏数据的情况下提高效率。同时提供了缓存统计信息、清空缓存和移除特定缓存值的功能。示例代码展示了如何使用这个带过期时间的缓存字典类和装饰器。
摘要由CSDN通过智能技术生成

python自带的lru_cache用起来很方便,对于需要大量计算来说,能大大减少计算时间;对于从后端或DB等提取数据来说,能大大减轻后端的压力,加速效果很明显。

但是实际应用的时候,如果后端某个数据更新了,lru_cache没提供删除单个数据方法,只能用cache_clear清空所有缓存数据,效率不高。

1、如果允许短时间内使用脏数据的话,可以设置一个过期时间,防止后台数据修改了而缓存一直不会更新;

Python资源共享群:484031800

2、如果不允许缓存读到脏数据,需要一个删除脏数据的接口,下次调用时刷新数据。

下面代码实现了一个带过期时间的缓存字典类和一个带过期时间的缓存装饰器,能同时解决上面两种情况,支持先进先出和LRU两种缓存淘汰算法。

注:暂不不支持多线程和异步协程库

用法:字典DictWithTTL和装饰器fifocachewithttl的参数相同

capacity: int = 128 最大缓存数量

ttl: int = 300 缓存时间(秒)

lru: bool = True 淘汰算法类型 True时为lru,False为FIFO

提供几个函数:

cache_info 查看缓存统计信息

cache_clear 清空缓存数据

cache_remove 移除缓存值

用例:

  •  
 
@fifocachewithttl(capacity=100, ttl=300)def addone(n): return n+
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值