[Django] - Redis 로 Caching 하기
먼저 Redis에 대해서 알아보자.
NoSQL
redis는 key-value 방식의 NoSQL 데이터 베이스이다.
NoSQL은 다음과 같은 종류가 있다.
- 키-밸류 : Redis, memcached, Oracle, Coherence…
- 열 지향 와이드 컬럼 : Cassandra, HBASE, Cloud Database…
- 문서형 : MongoDB, Couchbase, DynamicDB…
- 그래프형 : Neo4j
Redis
REDIS(REmote Dictionary Server)
모든 데이터를 메모리에 저장하고 조회하기에 최적화 되어있다.
크게 5가지 데이터 형식을 지원한다.
<String, Set, Sorted Set, Hash, List>
- 읽기 성능 증대를 위해 서버 측 복제를 지원한다.
장애 처리 및 읽기 성능을 위해 슬레이브/마스터 복제를 지원한다. 마스터에서 업데이트 되면 슬레이브로 실시간 데이터가 복제된다.
- 쓰기 성능 증대를 위해 클라이언트 측 샤딩을 지원한다.
샤딩은 데이터를 분산하여 저장한다.
Django
먼저 django-redis를 설치해주자.
pip install django-redis
이제 settings.py에 cache로 설정해주자.
# settings.py
# Cache
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1", # 1번 DB
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
이제 view 부분에서 caching을 해주자.
# views.py
from django.http import JsonResponse
from django.core.cache import cache
from .models import Post
def my_view(request):
posts = cache.get_or_set('posts', Post.objects.all().values('id', 'data'))
return JsonResponse(list(posts), safe=False)
정상적으로 caching 등록이 끝났다.