Ich habe eine Redis-Datenbank mit ein paar Millionen Schlüsseln. Manchmal muss ich Schlüssel nach dem Muster abfragen, z. 2016-04-28:*
für die ich verwende. Erster Aufruf sollteredis scan gibt leere Ergebnisse zurück, aber nicht Null Cursor
scan 0 match 2016-04-28:*
es dann einen Schlüsselbund und die nächsten Cursor oder 0 zurück, wenn die Suche abgeschlossen ist.
Wenn jedoch eine Abfrage ausgeführt wird und keine übereinstimmenden Schlüssel vorhanden sind, gibt immernoch einen Cursor ungleich Null zurück, aber eine leere Schlüsselgruppe. Dies passiert bei jeder nachfolgenden Abfrage, so dass die Suche nicht wirklich lange zu enden scheint.
Redis docs sagen, dass
SCAN Familie Funktionen garantieren nicht, dass die Anzahl der Elemente pro Anruf ist in einem bestimmten Bereich zurückgegeben. Die Befehle dürfen auch null Elemente zurückgeben, und der Client sollte die Iteration nicht als abgeschlossen betrachten, solange der zurückgegebene Cursor nicht Null ist.
So kann ich nicht einfach aufhören, wenn ich leere Reihe von Schlüsseln bekomme.
Gibt es eine Möglichkeit, die Dinge zu beschleunigen?