python对象的缓存后端系统
pussycache的Python项目详细描述
python pussy cache
==python pussy cache是python对象的一个缓存系统。
cache backend可以在内存中或redis/甚至可以将django
缓存框架与python pussy cache一起使用。
python pussy cache将缓存您定义的方法的结果,还将根据时间戳或您定义的方法来管理缓存失效。
[![构建状态](https://secure.travis-ci.org/novapost/python-pussycache.png?branch=master)(https://travis ci.org/novapost/python pussycache)
[![Python猫](https://pypip.in/v/pussycache/badge.png)(https://crate.io/packages/pussycache/)
[![python pussycache](https://pypip.in/d/pussycache/badge.png)(https://crate.io/packages/pussycache/)
下面是一个示例,它可以让事情变得更清楚
``python
import time
from pussycache.proxy import baseproxy
from pussycache.cache import basecachebackend
缓存的类myClass(对象):
def a_long_task(self,delta):
时间。睡眠(delta)
返回delta
def忘记时间(self):
返回none
cached_methods=[“a_long_task”],
invalidate_methods={“forget_about_time”:[“a_long_task”]})
cachedinstance=cache_proxy
您的cachedinstance现在可以使用了。它的工作方式就像一个普通的MyClass对象一样
>打印缓存位置。如果我们第二次调用相同的方法:
>打印缓存位置。如果我们第二次调用相同的方法,则10秒后的一个长任务(10)将立即返回结果,因为它在缓存中,而打印缓存位置。如果我们第二次调用相同的方法,则10秒后的一个长任务(10)将立即返回结果,因为它在缓存中,但
>打印缓存位置。一个长任务(3)将立即返回结果,因为它在缓存中,但打印缓存位置。但是,打印缓存位置。一个长任务(3)将立即返回结果,因为它在缓存中,但
3
3
3
3
3 br/>不同的参数,结果尚未缓存。
如果要使此方法的缓存无效:
打印cachedinstance.forget_about_time()
打印cachedinstance.a_long_task(10)
10秒后
10
````
当然,如果需要直接访问缓存后端,可以直接调用它。假设您需要使所有缓存失效:
`` python
````
>如果您需要直接调用缓存,同样适用:
`` python
cachedinstance.\u cache.set(“mykey”,“my value”,10)
cachedinstance.\\ u cache.get(“mykey”)
“我的值”
10秒后:
cachedinstance.\\ u cache.get(“mykey”)
值从缓存中消失
````
测试
----
要运行测试,只需使用“pip install tox”安装tox,然后运行
tox
==python pussy cache是python对象的一个缓存系统。
cache backend可以在内存中或redis/甚至可以将django
缓存框架与python pussy cache一起使用。
python pussy cache将缓存您定义的方法的结果,还将根据时间戳或您定义的方法来管理缓存失效。
[![构建状态](https://secure.travis-ci.org/novapost/python-pussycache.png?branch=master)(https://travis ci.org/novapost/python pussycache)
[![Python猫](https://pypip.in/v/pussycache/badge.png)(https://crate.io/packages/pussycache/)
[![python pussycache](https://pypip.in/d/pussycache/badge.png)(https://crate.io/packages/pussycache/)
下面是一个示例,它可以让事情变得更清楚
``python
import time
from pussycache.proxy import baseproxy
from pussycache.cache import basecachebackend
缓存的类myClass(对象):
def a_long_task(self,delta):
时间。睡眠(delta)
返回delta
def忘记时间(self):
返回none
cached_methods=[“a_long_task”],
invalidate_methods={“forget_about_time”:[“a_long_task”]})
cachedinstance=cache_proxy
您的cachedinstance现在可以使用了。它的工作方式就像一个普通的MyClass对象一样
>打印缓存位置。如果我们第二次调用相同的方法:
>打印缓存位置。如果我们第二次调用相同的方法,则10秒后的一个长任务(10)将立即返回结果,因为它在缓存中,而打印缓存位置。如果我们第二次调用相同的方法,则10秒后的一个长任务(10)将立即返回结果,因为它在缓存中,但
>打印缓存位置。一个长任务(3)将立即返回结果,因为它在缓存中,但打印缓存位置。但是,打印缓存位置。一个长任务(3)将立即返回结果,因为它在缓存中,但
3
3
3
3
3 br/>不同的参数,结果尚未缓存。
如果要使此方法的缓存无效:
打印cachedinstance.forget_about_time()
打印cachedinstance.a_long_task(10)
10秒后
10
````
当然,如果需要直接访问缓存后端,可以直接调用它。假设您需要使所有缓存失效:
`` python
>如果您需要直接调用缓存,同样适用:
`` python
cachedinstance.\u cache.set(“mykey”,“my value”,10)
cachedinstance.\\ u cache.get(“mykey”)
“我的值”
10秒后:
cachedinstance.\\ u cache.get(“mykey”)
值从缓存中消失
````
测试
----
要运行测试,只需使用“pip install tox”安装tox,然后运行
tox