Подтвердить что ты не робот

Как использовать 2 разных кеша в Django?

Мне нужно использовать кеш memcached и файл. Я настраиваю кеш в настройках:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': 'c:/foo/bar',
    },
    'inmem': {
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
    }
}

dummy является временным. Документы говорят:

cache.set('my_key', 'hello, world!', 30)
cache.get('my_key')

ОК, но как я могу теперь установить кеш и использовать кеш-память только для "inmem" (в будущем memcached)? В документации не упоминается, как это сделать.

4b9b3361

Ответ 1

CACHES = {
  'default': {
    'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
    'LOCATION': 'c:/foo/bar',
  },
  'inmem': {
    'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
  }
} 

from django.core.cache import get_cache, cache
inmem_cache = get_cache('inmem')
default_cache = get_cache('default')
# default_cache == cache 

Ответ 2

Так как Django 1.9, get_cache устарел. Выполните следующие действия для обращения к ключам из "inmem" (дополнение к ответам римлян):

from django.core.cache import caches
caches['inmem'].get(key)

Ответ 3

В дополнение к римлянам ответьте выше... Вы также можете условно импортировать кеш по имени и использовать по умолчанию (или любой другой кэш), если запрошенный не существует.

from django.core.cache import cache as default_cache, get_cache
from django.core.cache.backends.base import InvalidCacheBackendError

try:
    cache = get_cache('foo-cache')
except InvalidCacheBackendError:
    cache = default_cache

cache.get('foo')

Ответ 4

К сожалению, вы не можете изменить, какой псевдоним кеша используется для низкоуровневых методов cache.set() и cache.get().

Эти методы всегда используют кеш-память по умолчанию в строке 51 (в Django 1.3) django.core.cache.__init__.py:

DEFAULT_CACHE_ALIAS = 'default'

Итак, вам нужно установить кеш "по умолчанию" в кеш, который вы хотите использовать для низкоуровневого кеша, а затем использовать другие псевдонимы для таких вещей, как кеш сайта, кеш страниц и маршрутизация кеша db. `