BLOG ARTICLE cache | 1 ARTICLE FOUND

  1. 2012.07.25 Django의 cache 사용


Django에서는 Cache 기능도 제공한다.

memcached, DB, 로컬메모리, 파일(?) 등의 종류를 제공하는데 각각 장단점이 있다.


memcached는 외부 캐쉬프로세스를 띄워 놓고, 거기에 

DB 방식의 경우는 여러 인스턴스가 동일한 DB를 바라보니까 모두 같은 데이터를 사용할 수 있겠지만, 속도는 좀 느릴 것이고,

로컬메모리 방식은 각 인스턴스가 자기 메모리에 각각 cache하니까 다른 데이터를 사용할 수 있는 가능성이 있겠지만, 속도는 빠를 것이고,

파일은 DB와 비슷할 것 같다.


나는 설정할 것이 별로 없고 빠른 로컬메모리 방식을 선택했다.

거의 변경가능성이 희박한 데이터를 cache한다면, 로컬메모리 방식이 가장 좋을 듯하다.


일단 settings.py에 cache를 사용하겠다고 설정을 해 줘야 한다.

CACHES = {

    'default': {

        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',

        'TIMEOUT': 3600,

    }

}


이렇게 하면, Local Memory 방식의 cache를 사용하고, 3600초(1분) 단위로 cache 들어간 데이터가 삭제한다는 뜻이다.


다음은 코드에서 사용하기만 하면 된다.

from django.core.cache import cache


cache.set('key', value)
cached_val = cache.get('key')


아주 간단하다.

cache를 import 하고, cache.set으로 집어 넣고, cache.get으로 꺼낸다.


이것을 응용해서 구현을 한다면,

get해서 나온 값이 None이면 넣을 데이터를 조회하거나 만들어서 set을 하면 되겠다.

cache에는 어떤 값이나 객체도 넣을 수 있는 것 같다.


이외에도 get_many로 한번에 여러 key를 리스트로 던지면, key와 value로 구성된 dict로 리턴하는 함수도 있고,

cache에서 내용을 지우는 delete, 전체를 지우는 clear 함수도 있다.


다시 매뉴얼을 보니 화면단에서도 cache를 사용할 수 있는데, 필요한 분들은 매뉴얼을 보시길...


'Python_Django' 카테고리의 다른 글

decorator 만들기  (0) 2012.07.25
hash(digest) 호출  (0) 2012.07.25
request의 값 처리  (0) 2012.07.25
CSRF token 생성  (0) 2012.07.25
Django의 session 처리  (0) 2012.07.13
AND