[REDIS] 레디 스의 정확도 명령을 dbsize
REDIS레디 스의 정확도 명령을 dbsize
레디 스에서 dbsize 명령은 얼마나 정확합니까?
나는 dbsize에 의해 반환 된 키의 개수가 키 명령에 의해 반환되는 실제 키의 수와 일치하지 않는 것으로 확인되었습니다.
다음은 그 예이다 :
redis-cli dbsize
(integer) 3057
redis-cli keys "*" | wc -l
2072
왜 키의 실제 수보다 dbsize 훨씬 더 높다?
해결법
-
==============================
1.나는 그것이 키 만료에 연결되어 말할 것입니다.
나는 그것이 키 만료에 연결되어 말할 것입니다.
키 / 값 레디 스 등의 저장 또는 만료 개체 당 물리적 타이머를 정의 할 여유가 없다 memcached를. 그들 중 너무 많은있을 것입니다. 대신에 그들은 쉽게 항목이 만료 될 추적하고, 하나의 물리적 타이머에 대한 모든 만료 이벤트를 다중화하는 데이터 구조를 정의합니다. 또한 이러한 이벤트를 처리하는 게으른 전략을 구현하는 경향이있다.
레디 스로, 항목이 만료 될 때 아무 일도 발생하지 않습니다. 그러나 각 항목에 액세스하기 전에 검사가 체계적으로 만료 된 항목을 반환하지 않도록하고, 잠재적으로 항목을 삭제하기위한 것입니다. 이 게으른 전략의 위에, 모든 100 MS는 폐품 알고리즘 (즉,이 기본 사전에서 제거) 물리적 항목의 수를 만료 트리거됩니다. 각 반복에 대하여 고려되는 키의 개수가 만료 부하 (적응성 알고리즘 임)에 의존한다.
결과는 당신이 만료 이벤트의 꾸준한 흐름이있을 때 레디 스는, 주어진 시점에 만료 항목의 백 로그가있을 수 있습니다.
이제 질문에 돌아 오는 아직 제거되지 않은 만료 된 항목이 포함 있도록 DBSIZE 명령은 주 사전의 크기를 반환합니다. 이 모든 만료 된 항목을 제외하므로 KEYS 명령은 개인 키를 액세스, 전체 사전을 통해 안내합니다. 항목의 수는 그러므로 일치하지 않을 수 있습니다.
from https://stackoverflow.com/questions/9219107/accuracy-of-redis-dbsize-command by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스는 순서가 삽입, 또는 이상한 정렬? (0) | 2020.01.09 |
---|---|
[REDIS] 서버가 연결을 닫았다는 같은 레디 스 보인다 (0) | 2020.01.09 |
[REDIS] 실시간으로 노드 JS와 D3를 사용하여지도에 미국의 플로팅 이름 (0) | 2020.01.09 |
[REDIS] 어떻게 키 - 값 저장소에 기존의 관계형 데이터베이스를 변환하는? (0) | 2020.01.09 |
[REDIS] 레디 스의 TCP-백 로그 (0) | 2020.01.08 |