Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Schlüssel zum Überspringen des Redis-Scans

In der Tat! Das liegt daran, dass SCAN auf diese Weise funktioniert und aus der Redis-Dokumentation zitiert wird:

Während Blockierungsbefehle wie SMEMBERS jedoch alle Elemente bereitstellen können, die zu einem bestimmten Zeitpunkt Teil eines Sets sind, bietet die SCAN-Befehlsfamilie nur begrenzte Garantien über die zurückgegebenen Elemente, da sich die Sammlung, die wir inkrementell iterieren, während des Iterationsprozesses ändern kann.

Da SCAN jedoch sehr wenig mit dem Status verknüpft ist (nur der Cursor), hat es die folgenden Nachteile:Ein bestimmtes Element kann mehrmals zurückgegeben werden. Es ist Sache der Anwendung, den Fall von doppelten Elementen zu behandeln , zum Beispiel nur die zurückgegebenen Elemente zu verwenden, um Operationen auszuführen, die sicher sind, wenn sie mehrmals erneut angewendet werden.

Vielleicht möchten Sie also array_unique($keys) verwenden nach dem foreach .

Um zu verstehen, warum die Iteration so funktioniert, lesen Sie am besten diesen Teil der Redis-Dokumentation .