TTLCache或“Time To Live”缓存是 cachetools 模块中包含的第三个功能。它有两个参数——“maxsize”和“TTL”。“maxsize”的使用与 LRUCache 相同,但这里的“TTL”值表示缓存应存储多长时间。该值以秒为单位。 语法结构: @cached(cache= TTLCache(maxsize= 33, ttl = 600)) def some_fun(): pass 1....
ttl_cache = cachetools.TTLCache(maxsize=100, ttl=60) # 添加缓存项 ttl_cache["key"] = "value" # 等待一段时间,让缓存项过期 time.sleep(61) # 此时缓存项已过期,尝试获取时将返回默认值 value = ttl_cache.get("key", "default_value") 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12...
当然除了基本的 Cache,cachetools 还提供了一种特殊的 Cache 实现,叫做 TTLCache。 TTL 就是 time-to-live 的简称,也就是说,Cache 中的每个元素都是有过期时间的,如果超过了这个时间,那这个元素就会被自动销毁。如果都没过期并且 Cache 已经满了的话,那就会采用 LRU 置换算法来替换掉最久不用的,以此来保证数量。
from cachetoolsimportTTLCache from timeimportsleep cache=TTLCache(maxsize=3,ttl=timedelta(seconds=5),timer=datetime.now)cache['1']='Hello'sleep(1)cache['2']='World'print(cache.items)sleep(4.5)print(cache.items)sleep(1)print(cache.items) 运行结果如下: 代码语言:javascript 复制 <bound method...
from cachetools.keysimporthashkeyimporttime # 创建一个TTL缓存,最大容量为100,生存时间为10秒 cache=TTLCache(maxsize=100,ttl=10)@cached(cache,key=lambda x:hashkey(x))defexpensive_function(x):print(f"Computing result for {x}")time.sleep(2)# 模拟耗时操作returnx*x ...
importrequestsfromcachetoolsimportTTLCache# 创建具有过期时间的缓存cache=TTLCache(maxsize=100,ttl=...
1.2 Cachetools 的主要特点 cachetools的设计初衷是为了弥补 Python 标准库中@lru_cache功能上的不足。它引入了多种缓存策略,如基于时间的缓存 (TTLCache)、固定大小的缓存 (LFUCache) 等,使得开发者可以根据实际应用场景选择最适合的缓存机制。此外,cachetools还支持装饰器语法糖,使得函数级别的缓存变得异常简单直观。
lru_cache是 Python 标准库中的一个装饰器,用于缓存函数的返回结果,基于最近最少使用(LRU)策略。 fromfunctoolsimportlru_cache@lru_cache(maxsize=128)defexpensive_function(param1, param2):# 进行一些耗时的操作returnresult 2.cachetools cachetools是一个第三方库,提供了多种缓存策略,包括 LRU、LFU、TTL(基于...
更常见的做法是使用第三方库如cachetools来管理缓存,并提供明确的清除方法。 使用cachetools清除内存缓存的示例: python from cachetools import TTLCache, cached # 创建一个TTLCache实例,设置缓存项的生存时间为10秒 cache = TTLCache(maxsize=100, ttl=10) # 使用cached装饰器缓存函数结果 @cached(cache) def ...
LFUCache:基于 LFU(最不经常使用)算法的缓存,可以控制缓存大小。 RRCache:基于随机替换算法的缓存,可以控制缓存大小。 TTLRRCache:基于随机替换算法和过期时间的缓存,可以控制缓存大小和缓存过期时间。 这些缓存数据结构都可以通过cachetools库来使用,具体使用方式可以参考cachetools的官方文档。