Redis LRU 기반 퇴거/삭제 내부에 대해 알고 있습니까?Redis Internals - 샘플링을위한 LRU 구현
Redis는 오래된 (덜 사용 된) 키가 먼저 삭제되도록 어떻게합니까? (휘발성 키가없고 TTL 만료를 설정하지 않는 경우)
Redis에는 키 제거에 사용되는 샘플 크기를 제어하는 구성 매개 변수 "maxmemory-samples"가 있습니다. 따라서 샘플 크기를 10으로 설정하면 10 개의 키를 샘플링하고 가장 오래된 것을 제거합니다 이것들 중에.
내가 알지 못하는 것은이 키를 완전히 무작위로 샘플링하는지, 아니면 "이전 세대/덜 사용 된 세대"에서 자동으로 샘플링 할 수있는 메커니즘을 가지고 있는지 여부입니다.
제가 아는 한, 그것은 무작위로 키를 샘플링합니다. –
이것은 http://antirez.com/post/redis-as-LRU-cache.html에서 찾은 것입니다. "샘플 3"알고리즘 사용의 요점은 메모리를 절약하는 것입니다. 이것은 무작위 알고리즘이 거의 잘 이해되지 못하기 때문에 이것이 정밀도보다 훨씬 더 중요하다고 생각합니다. 예를 들어, 세 개의 객체만으로 샘플링하면 999 개의 데이터 세트에서 666 개의 객체가 만료되고 * 완벽한 * LRU 알고리즘과 비교하여 오류율은 14 %에 불과합니다. 나머지 14 %에는 매우 많이 사용되는 요소 범위에 속하는 요소가 거의 없습니다. 그래서 메모리 이득은 의문의 여지없이 정밀도를 지불 할 것입니다. –
답변으로 게시하고 수락해야합니다. :-) –