2011-03-07 2 views
4

그래서 저는 mysql에서 일부 데이터를 캐시하고 memcached에서는 일부 데이터를 캐시하려고합니다.Django 다중 캐싱 BACKEND 라우터 howto?

이 순간에 내 설정 파일에서 캐시 백 엔드 라우터를 작성하는 방법을 모르겠습니다.

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

저는 다중 데이터베이스 구조를 사용하며 다중 데이터베이스 라우터를 작성하는 방법을 알고 있습니다. settings.py

DATABASE_ROUTERS = ['oceankeys.dbrouter.SphinxRouter','oceankeys.dbrouter.DefaultDbRouter'] 

어느 한

장고 캐싱 백엔드 라우터를 만드는 방법을 알고?

감사

답변

3

나는 장고 캐시 프레임 워크는 일반적으로에 라우팅 DB를 모방 수 있다고 생각하지 않습니다. 당신이 settings.py의 캐시의 이름을 지정해야 middleware 캐시 프레임 워크를 사용하여 사이트 캐시를 들어

, 예를 들면 :

수동으로 이름을 지정할 수 있습니다
페이지 캐시에 대한
CACHE_MIDDLEWARE_ALIAS = "my_cache_alias" 

데코레이터의 캐시, 예를 들면의 :

@cache_page(60 * 15, cache="my_cache_alias") 
    def my_view(request): 
    ... 

나는 방법에 문제가되지 않도록 캐시 라우팅 정말 사이트 및 페이지 캐싱 의미가 확실하지 않다이 디자인되었습니다.

이제 MySQL을 데이터베이스 캐시 백엔드로 사용하는 경우 Django 문서 섹션에 따라 라우터를 설정하고 에 라우터를 만들 수 있습니다.

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', 
    } 
} 

그런 다음 어떤 모델에 사용할 캐시 백엔드 식별하는 라우터를 만들 예를 들어, 다음은 CACHES 설정 될 것입니다. DB 라우터와 똑같이 보이고 작동합니다 (단, database caching and multiple databases의 doc 섹션에서 볼 수 있듯이). db 별칭 대신 캐시 별칭을 반환한다는 점만 다릅니다.

0

예컨대

settings.py

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

views.py

from django.core.cache import caches 
cache = caches['myalias'] 
cache.set('my_key', 'hello, world!', 30) 
print cache.get('my_key') 

당신은 Django’s cache framework (섹션 : Accessing the cache)에서 자세히 볼 수 있습니다