python的缓存库(cacheout)
## 链接
* 项目: https://github.com/dgilland/cacheout
* 文档地址: https://cacheout.readthedocs.io
* PyPI(下载链接): https://pypi.python.org/pypi/cacheout/
* TravisCI(下载链接): https://travis-ci.org/dgilland/cacheout
## 特性
* 后端使用字典进行缓存
* 使用缓存管理轻松访问多个缓存对象
* 当使用模块级缓存对象,重构运行时的缓存设置
* 最大缓存大小限制
* 默认的缓存时间设置以及缓存项自定义存活时间
* 批量的设置、获取、删除操作
* 线程安全
## 多种缓存机制的实现
* FIFO(先进先出)
* LIFO(后进先出)
* LRU (最近最少使用机制)
* MRU (最近最多使用机制)
* LFU (最小频率使用机制)
* RR (随机替换机制)
## 线路图
* 层级缓存(多层级缓存)
* 支持缓存事件监听
* 获取缓存对象时的常规表示方法
* 获取缓存对象不存在时的回调处理支持
* 统计缓存
## 要求
Python >= 3.4
## 安装
```
pip install cacheout
```
## 使用
```python
In [1]: from cacheout import Cache
In [2]: cache = Cache()
In [5]: cache.set(1, 'foo', ttl=10)
In [6]: cache.get(1)
Out[6]: 'foo'
In [10]: cache.delete(1)
Out[10]: 1
```
## 缓存计算结果
![](http://om4h63cja.bkt.clouddn.com/img20181014161237.png)
### 计算斐波那契数列
开启缓存后,速度提高若干个数量级
```python
#!/usr/bin/env python
# python3
import time
from cacheout import Cache
cache = Cache()
start = time.time()
@cache.memoize()
def fib(n):
if n == 1 or n ==2 :
return 1
else:
return fib(n-1) + fib(n-2)
# 解除某个结果的缓存
fib.uncached(1)
# 清除缓存
cache.clear()
cost = time.time() - start
print("cost {}s, {}".format(cost, fib(200)))
```