카테고리 없음

[성능테스트] Redis vs DB

멋쟁휘개발자 2024. 11. 8. 07:35

Redis vs RDBMS 성능 테스트


기존에 구현한 `콘서트 예약 서비스`를 성능 최적화를 위해 DB -> 메모리 기반인 Redis 로 교체하고, 이에 따른 성능 테스트를 통한 결과를 확인하고자 합니다.

 

 

| Redis

데이터 처리 속도가 엄청 빠른 *NoSQL 데이터베이스

* NoSQL : key - value 형태로 저장하는 데이터베이스

 

| 장점

`인메모리`에 모든 데이터를 저장하기 때문에 데이터 처리 성능이 굉장히 빠르다.

이유는, 디스크 보다 메모리의 데이터 처리 속도가 월등히 빠르기 때문이다.

구분 RDBMS(ex. MySQL) Redis
데이터 저장공간 디스크 메모리(RAM)

 

 

 

 

| 성능 최적화 포인트

구분 대기열 입장 토큰 나의 대기 순번 조회
개선 포인트 만료시간이 5분인 wait 토큰 생성 ZRank를 사용하여, 빠르게 순번 조회

 

콘서트 시나리오에 레디스나, 캐시를 사용할 최적의 포인트를 고민해봤다.

하지만 아래의 이유로 다른 기능에 대해서는 Redis 를 적용하지 않았다.

  • 예약 가능한 날짜 조회 : as-is, 좌석이 매진됨에 따라 매진된 날짜는 조회되지 않음 = 실시간 변동성 데이터
  • 예약 가능한 좌석 조회 : 마찬가지로 실시간 변동성 데이터
  • 예약 내역 : 예약 가능 시간이란 정책이 있어, 캐시로 대체하려고 함. 하지만 조인 등 활용이 많은 데이터이기 때문에 DB로 둠
    • 하지만 테이블을 Redis로 완전 대체할 경우가 아니라, 병행한다면 괜찮을지 한 번 더 고민해봐도 좋은 부분이지 않을까..

| 실행결과

테스트 항목 Redis (평균) DB (평균)
요청 지속 시간 (avg) 18.08ms 30.12ms
요청 지속 시간 (min) 8.36ms 7.32ms
요청 지속 시간 (med) 14.36ms 16.82ms
요청 지속 시간 (p90) 23.98ms 62.57ms
요청 지속 시간 (p95) 32.16ms 107.41ms
http_req_blocked (avg) 67.87µs 83.96µs
http_req_waiting (avg) 17.89ms 29.92ms
요청 성공률 100% 100%
초당 요청 수 약 9.82/s 약 9.68/s

(3회 평균 속도)

| 알게된 점

  • 응답 속도: Redis가 DB보다 평균 응답 시간이 더 짧음
  • 지연 시간: Redis의 90% 및 95% 지연 시간이 DB보다 낮아, Redis가 더 일관된 성능을 보임
  • 초당 요청 수: 초당 처리할 수 있는 요청 수는 두 시스템이 비슷했지만, Redis가 약간 더 높음

 

| 끝으로

대기열에  대한 모든 기능에 대해  Redis 로 대체한 것이 아님에도  불구하고, Redis 에서 더 좋은 성능의 결과가 나왔다.

기대 했던 10배 이상의 성능을 확인한 것은 아니지만, DB가 더 빠르게 처리 되는 불상사가 발생하지 않았다.