본문 바로가기
NoSQL/redis

[Redis 6편] Redis 성능

by 무대포 개발자 2022. 6. 11.
728x90
반응형

목차는 redis 목차 에 있습니다.

source 는 Github 에 있습니다.

[Redis 6편] Redis 성능

Cache Stampede

  • Cache Stampede 란 캐시가 만료될 때, 대용량 트래픽의 경우 캐시 miss 가 여러번 발생할 수 있습니다. 여러 요청에 대해 cache miss 가 발생하면 각 request 는 DB 를 조회해서 데이터를 읽어와 캐시에 여러 번 쓰게 될 것 입니다.
  • cache miss 와 cache write 가 여러번 발생해서 성능에 영향을 주는 것이 Cache Stampede 입니다.

Cache Stampede 해결방안

  • 이런 현상을 해결하기 위해 PER(Probablistic Early Recomputation) 알고리즘을 도입합니다.
  • PER 이란 TTL (만료시간) 이후 캐시를 갱신할 것인지에 대한 알고리즘입니다. 보통은 TTL 이후 캐시를 버리지만, PER 알고리즘을 사용하면 일정 확률로 캐시를 갱신합니다. (알고리즘은 자세히 다루지 않겠습니다.)

Hot Key

  • hot key 란 하나의 키에 대한 빈번한 접근을 의미합니다. 대용량 트래픽에서 hot key 에 대한 대응방안이 안돼있다면 성능 문제가 발생할 수 있습니다.

Hot key 해결방안

서버를 여러대 늘리기

  • 가장 쉬운 방안은 서버를 여러대 늘리는 것이지만 서버의 고가용성 문제가 복잡합니다. 서버가 죽었을 때 failover 나 서버를 scale out 했을 때 등등

Hot key 복제본 만들기

  • 다른 방안은 Hot key 를 만들 때, 복제본을 만드는 것입니다.
  • 예를 들면, test 라는 hot-key 키가 있다면 앞에 prefix 를 붙이고 저장을 하는 것입니다. 해당 키에 접근할 때는 prefix 를 랜덤으로 붙여 접근하는 것입니다.

압축

  • 데이터를 저장할 때, 용량이 크다면 성능 저하가 발생합니다.
  • 이를 해결하기 위해 압축을 고려해볼 수 있습니다.
  • 압축을 할 때 고려사항은 적절한 압축 비율을 찾는 것입니다.
    • cpu , 안정성 등을 고려해 다른 환경에서 테스트하는 것이 좋습니다.

Reference

댓글