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
'NoSQL > redis' 카테고리의 다른 글
[Redis 8편] 싱글스레드를 사용하는 Redis 는 왜 빠른가? (1) | 2022.09.09 |
---|---|
[Redis 7편] Redis 로컬 띄우기 (docker, docker-compose) (0) | 2022.08.31 |
[Redis 3편] Redis 상세 정리 (key, 클러스터, 센티넬) (0) | 2022.01.13 |
[Redis 2편] Redis 상세 정리 (명령어, 싱글 스레드, 영속성) (0) | 2022.01.13 |
[Redis 4편] spring redis 환경 세팅 및 예제 (0) | 2022.01.06 |
댓글