【问题标题】:Setting multiple Django cache backends设置多个 Django 缓存后端
【发布时间】:2016-09-24 20:46:39
【问题描述】:

在一个 Django 项目中,我将缓存后端设置如下:

CACHES = {
  'default': {
    'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
  },
  'filemem': {
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
    'LOCATION': '/var/tmp/django_cache',
  }
} 

我正在使用filemem 来缓存特定守护任务的结果,而default 缓存则用于其他所有任务。

我读到LocMemCache 是 Django 在未指定时使用的默认缓存。如果这是正确的,那么从技术上讲,只需将下面的 sn-p 添加到我的settings.py 应该等同于上面的 sn-p:

CACHES = {
  'filemem': {
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
    'LOCATION': '/var/tmp/django_cache',
  }
} 

这就是我的问题。这两个 sn-ps 是否等效?或者如果我要指定非默认缓存,我是否也必须指定default?请指教。我是 Django 缓存的新手。

【问题讨论】:

    标签: django caching django-views


    【解决方案1】:

    为了在 Django 中使用多个缓存后端,它们都需要出现在 CACHES 字典中。有几种方法可以做到这一点,但你的第二个 sn-p 不是其中之一。

    你可以这样做,但我从未见过有人在实践中这样做:

    from django.conf.global_settings import CACHES
    
    CACHES['filemem'] = {
            'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
            'LOCATION': '/var/tmp/django_cache',
          }
    

    通常人们会明确声明他们将使用的所有 CACHE 后端,如下所示:

    CACHES = {
      'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
      },
      'filemem': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
      }
    } 
    

    但在这个 sn-p 中,您是 覆盖 仅使用 filemem 缓存的缓存字典:

    CACHES = {
      'filemem': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
      }
    } 
    

    【讨论】:

    • 嗯,这听起来合乎逻辑,但是当我尝试时,我得到了错误name CACHES is not defined
    • @HassanBaig 尝试先拉入全局缓存设置
    猜你喜欢
    • 2011-11-15
    • 1970-01-01
    • 2015-02-03
    • 2014-05-22
    • 2022-11-25
    • 2021-07-11
    • 2017-07-21
    • 2014-12-02
    • 1970-01-01
    相关资源
    最近更新 更多