Redis는 모든 서버 메모리를 차지합니다. 무엇을해야합니까?


1

버전 2.4.5를 실행하고 11GB의 dump.rdb가 메모리에로드 된 Redis 서버가 있습니다. 고용량 메모리 4x 초대형 인스턴스 (총 70GB)의 EC2에서 실행 중입니다. 그러나 Redis는 이미 50GB의 메모리를 사용하고 있으며 점점 더 커지고 있습니다. 내 데이터 세트는 여전히 약 20GB로 커질 것이므로 분명히 70GB 메모리로는 충분하지 않습니다. 이 제한을 극복하는 방법이나 Redis가 적은 메모리를 사용하도록하는 방법에 대한 아이디어가 있습니까?

redis 32bit를 시도했지만 시작시 데이터 세트를 메모리에로드하려고하면 죽습니다.

과거에도 max-memory를 시도했지만 이상한 결과가 나타났습니다. 가상 메모리를 사용하지 않았거나 사용되지 않을 예정이므로 가상 메모리를 사용해 보지 않았습니다.


더 많은 서버를 구입 하시겠습니까? 더 많은 메모리를 구입 하시겠습니까?
Tom O'Connor

답변:


3

다른 서버를 구입하고 샤딩을 수행하십시오. 이것이 Redis의 작동 방식입니다. 그것이 당신이 원하는 것이 아니라면, Redis는 당신의 목적에 맞는 소프트웨어가 아닙니다.


1

적절한 스왑이 있으면 메모리가 부족할 수 있습니다. 성능이 저하됩니다. 전체 데이터 세트를 RAM에 유지하지 않으려 redis는 경우 작업에 대한 잘못된 도구입니다.

Redis FAQ를 참조하십시오 :

Redis에서 메모리보다 큰 데이터 세트를로드하려고 시도 할 수 있으며 기본적으로 최신 운영 체제를 사용하는 경우 DB에 많은 데이터가 거의 액세스하지 않으면 OS의 가상 메모리 구현이 시도됩니다. 디스크에서 거의 사용되지 않는 메모리 페이지를 교체하고 필요할 때만이 페이지를 호출합니다. 거의 사용하지 않는 큰 값이 많으면 작동합니다. 특정 패턴없이 무작위로 액세스하는 수많은 작은 값이 있기 때문에 DB가 크면 작동하지 않습니다 (낮은 수준에서 페이지는 일반적으로 4096 바이트이며 단일 페이지에 다른 키 / 값을 저장할 수 있습니다). 자주 사용하는 키가 거의없는 경우 디스크에서이 페이지를 바꿀 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.