我的最终目标是为我想要的每个函数提供一个两层缓存(可能需要一个自我实现的装饰器) 我有多个虚拟机运行同一台Django服务器。第一个缓存层是内存,第二层是虚拟机之间的共享Redis。 该过程如下所示,为两层缓存修饰了一个函数。在函数调用的情况下,服务器在其内存缓存中查找该项。如果找不到它,那么它将签入共享Redis
我怎样才能做到这一点
我已经有了这个代码片段:
from cachetools.func import ttl_cache
from cache_memoize import cache_memoize
@ttl_cache(maxsize=settings.A_NUMBER, ttl=settings.CACHE_TIMEOUT)
@cache_memoize(settings.CACHE_TIMEOUT)
def my_fucn(arg1, arg2):
some logic here.
Django设置:
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': env.str('REDIS_MASTER'),
}
我读了这个(How to use 2 different cache backends in Django?),但我不知道是否有可能将它们用作装饰器
谢谢
您添加了正确的方法,但是decorator的顺序不正确,所以在您的示例中,它首先查询Redis,然后查询本地缓存,然后是函数调用
现在,它将首先检查ttl缓存,如果有它将返回的数据,如果没有,它将调用Redis cache方法以获得结果,如果Redis cache有它将返回的数据,否则它将调用函数以获得结果
相关问题 更多 >
编程相关推荐