1.强制的最大缓存限制
2.线程安全
3.有几种实现形式
- FIFO (First In, First Out):对应的FIFOCache,和Cache是一样的
- LIFO (Last In, First Out):LIFOCache
- LRU (Least Recently Used):LRUCache
- MRU (Most Recently Used):MRUCache
- LFU (Least Frequently Used): LFUCache
- RR (Random Replacement):RRCache
4.支持监听增删改事件
5.分层缓存
6.Python3.7以上才能使用
7.缓存具有生存周期(TTL time to live)
8.缓存的存储是基于字典
9.查询和删除支持字符串,正则表达式,函数等方式过滤
1.快速使用
安装:pip install cacheout
使用:
from cacheout import Cache
cache = Cache()
默认最大size = 256,TTL默认关闭,默认使用time.time模块计时,单位是秒。对于不存在的key,默认返回值是None。 默认的Cache是FIFO缓存。 默认缓存设置可以使用如下值:default指全局默认值。
cache = Cache(maxsize=256, ttl=0, timer=time.time, default=None) # defaults
ttl指的是缓存生命周期,默认单位是秒,cache的timer有关系。ttl=0表示不失效。 maxsize=0或者为None,缓存就没有大小的限制。
- 设置值:cache.set(1, ‘foobar’),cache.set(3, {‘data’: {}}, ttl=1)
- 获取值:cache.get(1) ,cache.get(2, default=False),cache.get(2, default=lambda key: key)
- 删除缓存:cache.delete(1)
- 清除整个缓存:cache.clear()
- 复制缓存:cache.copy() == {1: ‘foobar’, 2: (‘foo’, ‘bar’, ‘baz’)}
- 批量设置缓存:cache.set_many(), cache.get_many(),cache.delete_many()
- 获取所有key:assert list(cache.keys()) == [‘a’, ‘b’, ‘c’]
- 获取所有value:assert list(cache.values()) == [1, 2, 3]
- 获取所有的item:assert list(cache.items()) == [(‘a’, 1), (‘b’, 2), (‘c’, 3)]
- 迭代缓存:for key in cache:
- 校验key是否存在:cache.has() ,key in cache
- 删除失效的缓存:delete_expired(),并返回删除的数目。
cache.set_many({
'a': 1, 'b': 2, 'c': 3})
assert cache.get_many