14.[DRF] Redis 장고에서 레디스 사용하기 (feat. AWS)
https://github.com/microsoftarchive/redis/releases
- msi 다운로드 후 인스톨 (안 하면 에러남)
cmd
pip install django-redis
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1", #-> 여기서 1은 DB이름인 것 같음
"OPTIONS": {
"CLIENT_CLASS" : "django_redis.client.DefaultClient",
}
}
}
현업의 경우
채팅:
CHANNEL_LAYERS = {
'default' : {
'BACKEND' : 'channels_redis.core.RedisChannelLayer',
'CONFIG' : {
'hosts': [(REDIS_LOCATION_PRIMARY, 6379)],
}
}
}
캐싱:
CACHE_TTL = 30
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": [ REDIS_LOCATION_PRIMARY, REDIS_LOCATION_REPLICA],
"OPTIONS": {
"CLIENT_CLASS" : "django_redis.client.DefaultClient",
"MASTER_CACHE": REDIS_LOCATION_PRIMARY,
}
}
}
AWS
- AWS Elasticache의 대쉬보드에서 엔드포인트를 따온다
- 엔드포인트 앞에 http://가 붙지 않고 뒤에 6379 포트번호도 떼준다
.env
REDIS_LOCATION_PRIMARY : "주소"
REDIS_LOCATION_REPLICA : "주소"
from django.core.cache import cache
from django.conf import settings
from django.core.cache.backends.base import DEFAULT_TIMEOUT
CACHE_TTL = getattr(settings, 'CACHE_TTL', DEFAULT_TIMEOUT)
wsl
$ redis-server
sudo apt-get update
sudo apt-get install redis
sudo service redis-server start
redis-cli
127.0.0.1:6379> ping
PONG
def view_recipe(request, id):
if cache.get(id):
print("DATA FROM CACHE")
recipe = cache.get(id)
else:
try: recipe = Recipe.objects.get(id=id)
cache.set(id, recipe)
print("DATA FROM DB")
except Recipe.DoestNotExist:
return redirect('/')
context = {'recipe': recipe}
return render(request, "view.html", context}