2011-05-10 3 views
17

memcached 및 파일 기반 캐시를 사용해야합니다. I 설정 설정에서 내 캐시 :Django에서 2 개의 다른 캐시 백엔드를 사용하는 방법은 무엇입니까?

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

더미는 일시적입니다. 문서는 말한다 :

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

OK,하지만 어떻게 지금 설정하고 (미래 memcached와의) 전용 'inmem'캐시 백엔드에 대한 캐시를받을 수 있나요? 설명서에는이를 수행하는 방법이 언급되어 있지 않습니다.

답변

25
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

이 답변은 업데이트해야합니다 –

-2

낮은 수준 cache.set()cache.get() 방법에 사용되는 캐시 별칭을 변경할 수 없습니다.

이 방법은 항상 django.core.cache.__init__.py의 (장고 1.3) 라인 (51)에 따라 '기본'캐시를 사용

DEFAULT_CACHE_ALIAS = 'default' 

그래서 당신이에 사용할 캐시로 '기본'캐시를 설정해야 저수준 캐시를 사용하고 사이트 캐시, 페이지 캐시 및 db 캐시 라우팅과 같은 다른 별칭을 사용하십시오. 위의 로마서의 대답에 추가

2

`... 당신은 또한 조건부 이름으로 캐시를 가져올 요청이없는 경우 기본 (또는 다른 캐시)를 사용할 수 있습니다.

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') 
7

장고 1.9 이후 get_cache은 중단된다. 'inemem'(로마인의 답변에 추가)의 키를 처리하려면 다음을 수행하십시오.

from django.core.cache import caches 
caches['inmem'].get(key) 
관련 문제