我正在尝试使用Django LocMemCache
存储一些简单的值,但我不确定如何在Django启动时初始化缓存。 Django 1.7附带Applications,允许在AppConfig.ready()
中运行一些代码,这个地方非常适合初始化缓存,但根据Django 1.7文档:
“...虽然您可以按上述方式访问模型类,但请避免使用 在ready()实现中与数据库进行交互。“
所以,假设我想从我的模型中存储一些数据库查询:
x = MyModel.objects.count()
y = MyModel.(a really expensive query)
我应该如何以及何时启动缓存?这样做有推荐的“最佳实践”吗?
目前,我刚刚在我的应用程序中添加了以下cache.py
,但我不确定是否
我的代码命中数据库一次(即第一个请求),然后使用之前的缓存值(以下请求)。
# cache.py
from django.core.cache import caches
from .models import MyModel
class Cache(object):
def __init__(self):
self.__count = MyModel.objects.count()
self.cache = caches['cache-storage']
@property
def total_count(self):
return self.cache.get('total_count', self.__count)
然后我以这种方式使用缓存的值:
# view.py
from .cache import Cache
cache = Cache()
...
(some view)
counter = cache.total_count