der*_*evo 5 django memcached django-cache
所以我想在mysql中缓存一些数据,在memcached中缓存一些数据。
目前我的配置文件中有这个,但我不知道如何为缓存后端编写路由器。
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
Run Code Online (Sandbox Code Playgroud)
我使用多数据库结构,并且我知道如何编写多数据库路由器。
在设置.py
DATABASE_ROUTERS = ['oceankeys.dbrouter.SphinxRouter','oceankeys.dbrouter.DefaultDbRouter']
Run Code Online (Sandbox Code Playgroud)
有人知道如何让Django 缓存 BACKEND路由器吗?
谢谢
我不相信 Django 缓存框架可以模拟一般的数据库路由。
对于使用缓存框架中间件的站点缓存,您必须在settings.py中指定缓存的名称,例如:
CACHE_MIDDLEWARE_ALIAS = "my_cache_alias"
Run Code Online (Sandbox Code Playgroud)
对于页面缓存,您可以在装饰器中手动指定缓存的名称,例如:
@cache_page(60 * 15, cache="my_cache_alias")
def my_view(request):
...
Run Code Online (Sandbox Code Playgroud)
我不确定缓存路由对于站点和页面缓存是否真的有意义,所以我对其设计方式没有问题。
现在,对于使用 MySQL 作为数据库缓存后端的情况,您可以根据 Django 文档中有关数据库缓存的部分对其进行设置并创建路由器。例如,这将是您的CACHES设置:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
'my_cache_alias': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'my_cache_table',
}
}
Run Code Online (Sandbox Code Playgroud)
然后创建一个路由器来标识哪个缓存后端用于哪个模型。它的外观和工作方式与数据库路由器完全相同(您应该能够从有关数据库缓存和多个数据库的文档部分中看到),但它返回缓存别名而不是数据库别名。
| 归档时间: |
|
| 查看次数: |
3092 次 |
| 最近记录: |