문제
https://github.com/sendOwlOrganization/SendOwl/issues/17 을 통해 Redis로 조회수를 갱신하도록 개선함
그러나 실제 스트레스 테스트를 진행하면 sql을 2번 날리는 경우가 더 빠르다.
sql update쿼리를 통해 hit를 매번 갱신하는 경우
redis를 통해 hit를 갱신하는 경우
해결방법
1. 해당 문제를 개선하기 위해 @Async를 통해 비동기로 Redis의 함수 동작을 바꾸었다.
Redis + Async처리한 경우
결과적으로 비동기 처리를 추가하면 조금 더 빨라지는것을 확인가능하다. 그러나 mysql 쿼리를 2번 날리는 것보다는 빠르지 않다.
2. Redis 시간복잡도 줄이기
https://www.notion.so/dayparallax/Redis-4ab3e691d9a8494fb3bbc680962ba0c6
우아한 테크 세미나에서 진행한 레디스 강의를 수강하고 레디스 명령어마다 시간복잡도가 존재한다는 것을 알게 되었다.
또한 이러한 시간 복잡도로 인해 실제 성능상에 이슈를 불러온다는 것을 알게 되었다.
따라서 현재 로직에 시간복잡도 문제가 있을 수 있다고 판단하여 redis를 탐색하여 키를 할당하거나 ttl을 설정하는 것을 더 간략하게 만들었다.
탐색명령어 제거하여 시간복잡도를 줄인경우
결과적으로 사용하는 명령어를 더 간략하게 만들어 시간복잡도를 줄이니 성능이 개선되었다.
'스프링 부트 REST API 개발일지' 카테고리의 다른 글
[스프링] spring MVC life cycle (0) | 2022.04.25 |
---|---|
JWT (Json Web Token) (0) | 2022.04.05 |
[SpringBoot] DTO를 어떻게 관리해야할까? (0) | 2022.04.05 |
[고민] public repository에 application.properties(.yml)의 정보를 어떻게 관리해야할까? (0) | 2022.03.11 |