-
Notifications
You must be signed in to change notification settings - Fork 1
[BE] Redis를 도입하게 된 계기
박진명 edited this page Dec 3, 2024
·
1 revision
- 랭킹 조회 혹은 최근 검색 기록 조회 시 매번 ORDER BY 연산이 필요하며 이로 인한 자원 낭비가 발생한다.
- 동시 접속자 증가에 따른 DB 부하가 증가한다.
- 최근 검색어의 경우 빈번한 I/O 가 필요하다.
- Sorted Set 을 이용해 효율적으로 랭킹 관리
- 인메모리 데이터 처리로 빠른 응답 속도
- 사용자 증가에 따른 빈번한 DB 이용에 따른 부하를 줄일 수 있음
- 테스트 목적: MySQL과 Redis의 성능 비교 분석
- 테스트 도구 : Locust
- 테스트 엔드 포인트 :
/api/rankings
User가 15000명이 될 떄까지 지속적으로 /api/rankings 를 호출하는 Locust 스크립트를 이용하여 테스트를 진행해보았다.
MySQL의 경우 중간에 응답 시간이 6000ms가 넘어가는 피크도 발견되었으며 인원이 10000명을 넘어감에 따라 점점 RPS가 급격히 떨어지고 time out에 의해 응답을 받지 못하는 경우가 늘어났다.
이에 반해 Redis의 경우 15000명까지 RPS가 비교적 유지되었고 응답에 실패한 요청이 없고 동시에 Response time 또한 MySQL보다 낮게 측정되었다.
- MySQL
- Redis
[[우아한테크세미나] 191121 우아한레디스 by 강대명님](https://www.youtube.com/watch?v=mPB2CZiAkKM)
- [FE] 프론트엔드 기술스택
- [FE] 라이브러리 없이 차트 구현 이유
- [FE] Canvas API 사용방법
- [FE] 네비게이션 바 애니메이션 구현
- [FE] Socket.io 사용방법
- [FE] Tanstack Router에 대하여...
- [FE] Intl(Internationalization) API
- [FE] React Suspense 적용
- [FE] 한글 입력 방식의 유연성을 높인 검색 시스템 구현하기
- [BE] 백엔드 기술 스택
- [BE] SSE vs Socket.io
- [BE] Redis를 도입하게 된 계기
- [BE] ACG Rule을 활용한 Secure CI CD 파이프라인 구현
- [BE] Nginx 로드밸런싱을 통해 한국 투자 API 소켓 제한 극복
- [BE] 주가 지수 기능 개발 과정
- [BE] 매수 및 매도 기능 개발 과정
- [BE] 실시간 자산 조회 기능 개발 과정
- [BE] 단위 테스트
- [BE] redis를 이용한 한국투자 Open API 세션 관리
- [BE] 데이터베이스 인덱싱
- [FE] React에서의 DOM 요소 접근 (useRef vs getElementById)
- [FE] Outlet을 활용한 공통 레이아웃 관리
- [FE] react hooks가 특정 조건에서 실행되면 안되는 이유 & useQuery에 query function 매개변수가 undefined일 수도 있을 때 어떻게 해결할까
- [FE] cross‐domain 로컬 환경에서 cookie로 인증 처리하기 with vite proxy
- [FE] 크롬&사파리 Composition 차이
- [FE] useEffect 의존성 배열
- [BE] Naver Cloud Platform HTTPS 무응답 현상
- [BE] 한국투자 Open API에서 access token을 발급받지 못하는 문제
- [BE] 한국투자 Open API와 웹소켓 연결이 되지 않던 문제
- [BE] 한국투자 Open API 웹소켓 연결이 중단되는 문제
- [BE] 같은 주식 주문이 동시에 여러 번 체결되는 문제
- [BE] 한국투자 Open API Websocket 세션을 두 개에서 한 개로 변경하기
- [BE] Nginx 로드 밸런싱 중 Socket bad Request 발생하는 현상
- [BE] 매수/매도 체결 로직에 의해 redis pub/sub이 정상적으로 동작하지 않는 문제