gpt4 book ai didi

Django 多个缓存后端路由器如何?

转载 作者:行者123 更新时间:2023-12-01 02:50:36 24 4
gpt4 key购买 nike

所以我想在mysql中缓存一些数据,在memcached中缓存一些。

目前我的配置文件中有这个,但我不知道如何为缓存后端编写路由器。

CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}

我使用多数据库结构,我知道如何编写多数据库路由器。

在设置.py
DATABASE_ROUTERS = ['oceankeys.dbrouter.SphinxRouter','oceankeys.dbrouter.DefaultDbRouter']

有谁知道怎么做 Django 缓存后端 路由器?

谢谢

最佳答案

我不相信 Django 缓存框架可以模仿数据库路由 一般 .

对于 站点缓存 使用缓存框架 middleware您必须在 settings.py 中指定缓存的名称,例如:

CACHE_MIDDLEWARE_ALIAS = "my_cache_alias"

对于 页面缓存 您可以在装饰器中手动指定缓存的名称,例如:
@cache_page(60 * 15, cache="my_cache_alias")
def my_view(request):
...

我不确定缓存路由是否真的对站点和页面缓存有意义,所以我对这种设计方式没有问题。

现在,对于您使用 MySQL 作为数据库缓存后端的情况,您可以根据 database caching 上的 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',
}
}

然后创建一个路由器来标识哪个缓存后端用于哪个模型。它的外观和工作方式与 DB 路由器完全相同(您应该可以从 database caching and multiple databases 的文档部分看到),但它返回缓存别名而不是 db 别名。

关于Django 多个缓存后端路由器如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5217135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com