Redis VM은 Redis 2.4에서 더 이상 사용되지 않으며 Redis 2.6에서 제거되었습니다. 막 다른 길 : 사용하지 마십시오.
블로킹 VM을 OS 페이징과 혼동시키는 것 같습니다. 그들은 서로 다른 두 가지입니다.
Redis VM이 전혀 구성되지 않은 경우 (차단 모드와 관계없이) OS 페이징은 Redis의 기본 모드입니다. OS가 Redis 메모리를 실제 메모리에 맞지 않으면 교체합니다. 이벤트 루프는 언제든지 멈출 수 있습니다. 이 경우, Redis 내부 데이터 구조 중 어느 것도이 용도로 설계되지 않았기 때문에 성능이 최악입니다 (지역성이없고 페이징 시스템이 없음).
Redis VM은 비 차단 모드 (I/O 스레드 사용)로 구성 할 수 있습니다. I/O가 완료되면 이벤트 루프가 차단되지 않고 Redis가 여전히 응답합니다. 그러나 너무 많은 I/O가 겹쳐지면 I/O 스레드가 완전히 사용 중이며 응답 성있는 Redis로 끝나지 만 I/O가 필요한 쿼리는 처리 할 수 없습니다.
Redis VM을 차단 모드로 구성 할 수도 있습니다. 이 모드에서 모든 I/O는 메인 이벤트 루프 스레드에서 동 기적으로 수행됩니다. 따라서 이벤트 루프는 I/O의 경우에 고정됩니다 (예를 들어 키 미스의 경우). 모든 클라이언트가 영향을받습니다. 그러나 일부 스레딩 예약/동기화가 저장되므로 일반 성능 (CPU 소비 및 대기 시간)이 비 차단 모드보다 낫습니다.
실제로 OS 호출과 Redis 차단 VM의 차이는 입도 수준입니다. Redis VM을 사용하면 세밀도가 핵심입니다. OS 페이징을 사용하면 페이지 (여러 관련되지 않은 키들로 확장 될 수있는 4KB 블록)가됩니다.
3 가지 경우 모두 덤프 파일의 초기로드가 매우 느려지고 시스템에서 임의 I/O의 피크가 생성됩니다. 당신이 지적했듯이, 대부분의 객체는로드되고 나서 스왑 아웃됩니다. 워밍업 시간이 중요 할 것입니다.
데이터에 극단적 인 지역이 있거나 대기 시간에 대해 전혀 신경 쓰지 않는 경우를 제외하고는 Redis VM의 16GB 데이터 세트에 1GB RAM을 사용하는 것이 과학 소설 IMO입니다.
Redis VM이 단계적으로 제거 된 이유가 있습니다. 의도적으로 디스크 기반 데이터 저장소 (파일 매핑 또는 직접 I/O를 활용하여 이중 버퍼링을 방지하고 B 트리와 같은 적합한 데이터 구조 사용)를 수행하지 않습니다.
메모리 내장 저장소로 Redis가 우수합니다. 그러나 RAM보다 큰 데이터를 저장해야하는 경우에는 사용하지 마십시오. 다른 (디스크 기반) 저장소는 모두 더 나은 성능을 발휘합니다.