swsnu / swpp2020-team7

냉장고 파먹기 - 냉장고 속 재료를 기반으로 나만의 레시피를 추천받자! 주변 이웃과 재료 거래는 덤!
https://naengpa.shop/
3 stars 3 forks source link

[Backend] Caching with Redis #69

Closed vegeshop closed 3 years ago

vegeshop commented 3 years ago

localhost에서 loadtest로 GET /api/users/를 100회 시행하면 다음과 같이 35초가 걸립니다. loadtest -n 100 http://127.0.0.1:8000/api/users/

image

user 데이터가 10개 이하임에도 불구하고 부하가 걸릴때 매우 느린 속도로 응답합니다. Redis를 이용해 캐싱을 할 필요가 있습니다.

vegeshop commented 3 years ago

Redis 캐싱을 적용한 결과 다음과 같이 동일환경 100회 load test를 0.2초만에 통과합니다.

image

10k회 load test에는 20초가 소요됩니다.

vegeshop commented 3 years ago

GET articles list를 100회 수행하는 시간은 90s에서 26s로 줄었습니다.

vegeshop commented 3 years ago

redis를 사용하려면 [mac]brew install redis 또는 [linux]sudo apt-get install redis-server로 redis-server를 설치하고, 백엔드 서버 실행시 다른 터미널에서 redis-server 명령어로 캐싱 서버를 따로 실행시켜주셔야 합니다.

따라서 start-back.sh 파일에 다음과 같이 백그라운드에서 redis 서버를 가동하는 코드를 추가했습니다. redis-server --daemonize yes

하지만 이 경우 django 서버를 중지하더라도 redis 서버는 중지가 되지 않습니다. redis 서버를 중단하고 싶으실 경우 [mac]redis-cli shutdown 명령어로 직접 중단하셔야 합니다.