2012-08-03 3 views
2

redis.conf 파일에서 우리는 maxisk 정책을 alliction-random으로 퇴거 정책으로 설정하고 최대 메모리로 4GB를 할당했습니다. 우리는 5 백만 개의 열쇠를 삽입했지만, 우리가 실제로 dbsize를 확인했을 때 단지 약 250 만개 밖에 보이지 않았습니다.메모리가 redis로 가득 차서 데이터가 디스크에 저장되지 않는 이유는 무엇입니까?

그래서 퇴거 정책이 메모리 또는 디스크에서만 키를 제거합니까?

주어진 maxmemory가 꽉 찼을 때마다 축출을 위해 선택한 키를 필요할 때마다 디스크에서 나중에 검색 할 수 있도록 디스크로 플러시해야합니다.

Conf 파일 주석은 키가 제거 될 것이라고 언급하지만 메모리에서만 제거되는지 또는 디스크 (예 : 영구 저장)에서도 제거되지 않는다고 설명합니다.

감사합니다.

답변

4

메모리에서 제거 된 키가 제거됩니다. 디스크 스냅 샷을 건드리지 않았습니다. 그러나 디스크의 값은 다음 스냅 샷을 만들 때 사라집니다.

+0

설명해 주셔서 감사합니다. 그렇지만 우리는 의심의 여지가 없습니다. 그래서 적은 메모리를 가진 redis 서버에 대형 키 데이터 세트를 저장할 방법이 없습니까? 즉 디스크 저장소는 메모리 스냅 샷을 저장하는 데 사용되며 메모리 오버플로가 발생하면 디스크 저장소로 저장되지 않습니다. 그렇다면 redis는 전체 키가 redis server의 사용 가능한 메모리에 들어갈 수있는 응용 프로그램에만 적합합니까? 왜 그냥 메모리에서 디스크로 키를 바꾼 다음 필요할 때마다 디스크에서 다시로드하지 않는가? redis 설명서를 검색하려고했지만 이러한 쿼리를 찾을 수 없으므로 도와주세요. – Sohan

+0

@Sohan : 네, 정확하게 요. VM 지원은 중단되었고 디스크 저장소는 사람들이 일반적으로 redis를 사용하는 방식이 아니기 때문에 디스크 제작을 프로덕션 (또는 다른 방향)으로 만들지 않았습니다. 이러한 기능은 코드를 복잡하게 만들고 속도 저하를 줄였으며 거의 ​​가치를 갖지 못했습니다. RAM보다 큰 데이터 세트를 지원해야하는 경우 다른 제품을 살펴보십시오. –