我需要使用基于memcached和文件的缓存。 我在设置中设置了缓存:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': 'c:/foo/bar',
},
'inmem': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
}
假是暂时的。 Docs说:
cache.set('my_key', 'hello, world!', 30)
cache.get('my_key')
好的,但是我现在如何设置和获取仅用于'inmem'缓存后端的缓存(在将来的memcached中)?文档没有提到如何做到这一点。
答案 0 :(得分:26)
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
答案 1 :(得分:10)
自Django 1.9以来,get_cache
已被弃用。执行以下操作来解决“inmem”中的键(除了Romans的回答):
from django.core.cache import caches
caches['inmem'].get(key)
答案 2 :(得分:3)
除了Romans的上述答案之外......您还可以通过名称有条件地导入缓存,如果请求的存在,则使用默认(或任何其他缓存)。
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')
答案 3 :(得分:0)
>>> from django.core.cache import caches
>>> cache1 = caches['myalias']
>>> cache2 = caches['myalias']
>>> cache1 is cache2
True
答案 4 :(得分:-2)
很遗憾,您无法更改用于低级cache.set()
和cache.get()
方法的缓存别名。
根据django.core.cache.__init__.py
的第51行(在Django 1.3中),这些方法始终使用“默认”缓存:
DEFAULT_CACHE_ALIAS = 'default'
因此,您需要将“默认”缓存设置为要用于低级缓存的缓存,然后将其他别名用于站点缓存,页面缓存和数据库缓存路由等事务。 `