我试图使用django-cache-machine来缓存我的应用程序中的查询,但我想使用Redis作为后端。文档并没有真正解释如何做到这一点,但存储库中充满了Redis引用,所以我很确定这是可能的。我想确保我做得对,所以我想知道是否有人有任何配置这个的经验,也许更重要的是,知道是否有任何警告?
设置:
CACHE_MACHINE_USE_REDIS = True
REDIS_BACKEND = redis://127.0.0.1:6379?
https://github.com/jbalogh/django-cache-machine/blob/master/caching/invalidation.py L187https://github.com/jbalogh/django-cache-machine/blob/master/caching/invalidation.py L213
我在我的项目中有一点经验,一个从大约5000万条记录生成表的报表系统。
数据库是Mysql,我可以显示我的设置和模型供参考。
设置:
# cache machine
CACHES = {
'default': {
'BACKEND': 'caching.backends.memcached.MemcachedCache',
'LOCATION': [
'127.0.0.1:11211',
],
'PREFIX': 'report:',
},
}
CACHE_COUNT_TIMEOUT = 60 * 24 # one day
CACHE_EMPTY_QUERYSETS = True
模型:
class App(**CachingMixin**, models.Model):
**objects = CachingManager()**
name = models.CharField(max_length=64,
default='')
注意 cache-machine对于query_set工作得很好。filter和count,不适用于query_set。annotate或aggregate。当然,不要忘记首先启动memcache客户端。
当运行时,你可以在django*.log中看到cache-machine的日志,告诉你是否命中缓存。