1. Docker redis run & django-redis 설치
Memcached 형태의 Memory DB인 Redis를 Docker로 작동시킨다.
$ docker run -p 6379:6379 redis
Django에서 Redis에 접근하기 위한 추가 library를 설치한다.
$ pip install django-redis
2. settings.py 작성
django-admin을 이용한 project는 만들었다고 가정
CACHES = {
'default':{
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379',
}
}
3. urls.py 작성
from django.contrib import admin
from django.urls import path
from .views import cachingView
urlpatterns = [
path('admin/', admin.site.urls),
path('cachingtest/', cachingView.as_view()),
]
4. views.py 작성
Redis를 CACHE_KEY로 조회 하여 CACHE_VALUE로 저장한다. (없으면 None)
해당 코드는 최초 KEY에 접근시 CACHE_KEY에 'DB Value'라는 예제 값이 저장되는 예제이다.
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import status
from django.core.cache import cache
CACHE_KEY = 'category_list'
class cachingView(APIView):
def get(self, request):
cache_value = cache.get(CACHE_KEY, None)
if cache_value == None:
cache.set(CACHE_KEY, 'DB Value') # key, value, expriation time
cache_value = 'DB Value'
return Response({'cache_value' : cache_value}, status=status.HTTP_200_OK)
5. Postman API 결과 비교 (캐싱 사용 전/후)
캐싱 사용 전 / 후 로 API를 계속 여러번 날려보면 처음(25ms) => 두번째 이후(11ms)로 감소한 것을 확인 할 수 있다.
'Python > DRF' 카테고리의 다른 글
[DRF] Serializer 특징, 모듈(메소드, 인자) 비교 (0) | 2023.02.11 |
---|---|
[DRF] DRF Pagination (by. CursorPagination) (0) | 2022.11.10 |
[DRF] DRF Pagination (by. LimitOffsetPagination) (0) | 2022.11.10 |
[DRF] DRF Pagination (by. PageNumberPagination) (0) | 2022.11.10 |