-
[개념 정리] Redis와 CacheOpsdjango 2022. 2. 14. 22:07
# Cache란?
: 캐시 (Cache)란 자주 사용하는 데이터를 미리 복사해 놓은 저장소를 말하며, 캐싱은 자주 사용하는 데이터를 따로 저장해 놓고 해당 데이터를 사용할 필요가 있을 때에는 바로 사용하는 일련의 과정을 의미한다. 일반적으로 우리가 데이터베이스에서 데이터를 가져온다는 것은 하드디스크에서 가져온다는 뜻인데, 하드디스크는 속도로 따지면 최하위권이다. 그래서 가져올 데이터의 용량이 크다면 그만큼 로딩에 시간이 걸리게 된다. 그래서 자주 사용되지만, 잘 변경되지 않는 데이터는 캐시 메모리에 넣어놓고 쓰면 용량이 큰 데이터도 매우 빠른 속도로 로딩이 가능해진다.
Django에서 사용자가 많아지면, 그만큼 DataBase에 Query를 많이 보내게 되고, DB에 부하가 많아지고 서비스가 느려진다. 이럴 때 캐시를 사용하면 동일한 ORM을 호출할 때 이미 캐시에 저장되어 있는 경우 DB에 query를 날리지 않고 캐시에서 ORM의 결과를 가져오게 된다. 그럼 DB의 부하를 줄이고 속도를 높일 수 있다. 장고에서 이 캐싱 기능을 적용하는데 Redis라는 데이터베이스가 많이 사용된다.
# Redis?
: Redis는 No-SQL이라고 말하는, 일반적인 RDBMS(관계형 데이터베이스)들과는 다른 비관계형 데이터베이스이다. No-SQL에도 여러 분류에 따라서 데이터베이스를 나눌 수 있지만 Redis는 그중에서도 "key-value" type 데이터베이스에 속한다. 즉 Redis는 "key-value" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반의 DBMS으로 key를 통해 value (데이터)를 저장하고 호출한다.
# CacheOps?
: cacheops는 django에 Redis Cache를 쉽게 적용하고, 관리할 수 있도록 도와주는 라이브러리이다.
# CacheOps의 장점
1. 적은 코드로 ORM에 캐시를 간편하게 적용할 수 있다.
2. CacheOps로부터 ORM Cache 생성 / 조회시 다양한 이점을 얻을 수 있다.
- Cache Hit 에 실패한 경우 (캐시 메모리에서 원하는 값을 찾지 못한 경우), DB에서 값을 조회한 후, 이를 다시 캐싱하는 과정을 신경 쓰지 않아도 된다.
- ORM 결과를 Redis에 저장하기 위해 직렬화한 후, 데이터를 가져오기 위해 역직렬 화하는 과정을 신경 쓰지 않아도 된다.
- cache key 생성 패턴에 관여하지 않아도 된다. cacheops는 모델 이름과 필터 조건을 활용하여, query 별로 unique한 cache key를 만들어낸다.
# cacheops의 사용법
: 이 포스팅에서는 개념에 대한 정리만 하므로 자세한 사용법은 아래 링크를 참조하자
https://americanopeople.tistory.com/318
(Django) CacheOps - ORM에 Redis Cache 쉽게 적용하기
django-cacheops는 Django에 Redis Cache를 쉽게 적용하고, 관리할 수 있도록 도와주는 라이브러리이다. Cacheops의 가장 큰 장점은 ORM에 캐시를 간편하게 적용할 수 있단 점이다. 이번 포스팅에서는 Cacheops
americanopeople.tistory.com
참조
https://americanopeople.tistory.com/318
'django' 카테고리의 다른 글
[개념 정리] Django의 ORM과 Lazy-Loading, N+1 Problems, Eager-Loading (0) 2022.02.18 [개념 정리] 쿠키/세션, 그리고 JWT (0) 2022.02.15 [개념 정리] Celery란 무엇인가? (0) 2022.02.14 [개념 정리] docker를 왜 사용할까? (0) 2022.02.14 [개념 정리] Django, Nginx 그리고 Gunicorn의 관계 (0) 2022.02.13