복붙노트

[REDIS] 스캔 반환에게 빈 결과를하지만 제로가 아닌 커서를 레디 스

REDIS

스캔 반환에게 빈 결과를하지만 제로가 아닌 커서를 레디 스

나는 몇 백만 키와 레디 스 데이터베이스가 있습니다. 가끔 패턴에 의해 쿼리 키에 필요한 예를 들어, 2016년 4월 28일 : 나는 스캔 사용하는 *. 먼저 호출해야한다

scan 0 match 2016-04-28:*

검색이 완료 경우는 키와 다음 커서 또는 0의 무리를 반환합니다.

내가 쿼리를 실행하고 일치하는 키가없는 경우, 여전히 비 제로 커서하지만 키의 빈 집합을 반환 검사합니다. 검색이 정말로 긴 시간 동안 종료하지 않는 것, 그래서이 모든 연속 쿼리에 일어나고 유지합니다.

레디 스의 문서는 말

내가 키 빈 집합을 얻을 때 그래서 난 그냥 중지 할 수 없습니다.

내가 일을 속도를 높일 수있는 방법이 있나요?

해결법

  1. ==============================

    1.당신은 항상 확인이 더 더 일치하지 수 없습니다 스캔 (즉 GET 커서 == 0)을 완료해야합니다. 당신은, 그러나, 반복 횟수를 줄이기 위해 COUNT 옵션을 사용할 수 있습니다. 그것을 증가 시작 (예를 들어, 이중 또는 두 가지의 힘하지만 단지의 경우 최대 캡을 넣어) 레디 스는 "열심히 검색"하기 위해, 모든 빈 응답으로 -이 당신의 일치 패턴으로 일반적인 시나리오의 경우 10의 기본값은 빠르고 키. 그렇게함으로써, 당신은해야한다 "속도 일까지"그래서 네트워크 왕복에 저장됩니다.

    당신은 항상 확인이 더 더 일치하지 수 없습니다 스캔 (즉 GET 커서 == 0)을 완료해야합니다. 당신은, 그러나, 반복 횟수를 줄이기 위해 COUNT 옵션을 사용할 수 있습니다. 그것을 증가 시작 (예를 들어, 이중 또는 두 가지의 힘하지만 단지의 경우 최대 캡을 넣어) 레디 스는 "열심히 검색"하기 위해, 모든 빈 응답으로 -이 당신의 일치 패턴으로 일반적인 시나리오의 경우 10의 기본값은 빠르고 키. 그렇게함으로써, 당신은해야한다 "속도 일까지"그래서 네트워크 왕복에 저장됩니다.

  2. from https://stackoverflow.com/questions/36918471/redis-scan-returns-empty-results-but-nonzero-cursor by cc-by-sa and MIT license