Wir alle wissen, dass Sie bei der Suche nach Redis-Schlüsseln das Schlüsselmuster verwenden können, aber wenn zu viele Schlüssel vorhanden sind, ist die Effizienz des Schlüsselbefehls sehr gering, wenn er direkt online verwendet wird Es kann sogar zu einem Unfall kommen. Zu diesem Zeitpunkt können wir auch den Scan-Befehl verwenden. Der Befehl
SCAN ist ein Cursor-basierter Iterator (cursor based iterator
): Bei jedem Aufruf des Befehls
SCAN wird dem Benutzer ein neuer Cursor zurückgegeben, den der Benutzer benötigt die nächste Iteration. Verwenden Sie diesen neuen Cursor als Cursorparameter des SCAN-Befehls, um die vorherige Iteration fortzusetzen.
Wenn der Cursor-Parameter des SCAN-Befehls auf 0 gesetzt ist, startet der Server eine neue Iteration, und wenn der Server einen Cursor mit dem Wert 0 an den Benutzer zurückgibt, zeigt dies an, dass die Iteration beendet ist .
Schlüssel generieren
<?php // 生成1000个 $redis = new \Redis(); $redis->connect('127.0.0.1', 6379, 10); $redis->select(2); $arr = [ 'rwer', '24erw', 'rterq4', 'sdgfd5', 'dgsdg', 'sfst', ]; for ($i=0; $i<1000; $i++) { $redis->set(md5($i.$arr[$i%6]), md5($arr[$i%6].'sdfsd')); } echo "OK".PHP_EOL;
Schlüssel Nummer anzeigen
keys c*
Scan verwenden, um Schlüssel in Redis zu ersetzen
Scan-Traverse
<?php $redis = new \Redis(); $redis->connect('127.0.0.1', 6379, 10); $redis->select(2); $iterator = null; // 遍历前缀 $pattern = 'c*'; $count = 100; // 务必设置,如果没扫描到,继续扫描,而不是返回空,否则while直接退出,遍历就会不准确 $redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY); $total = []; $i = 0; // $count可以不设置,非必需参数 while($arr = $redis->scan($iterator, $pattern, $count)) { $arrVal = $redis->mget($arr); $ret = array_combine($arr, $arrVal); $total = array_merge($total, $ret); $i++; } // var_dump($total); var_dump($i); echo count($total).PHP_EOL;
Scan verwenden, um Schlüssel in Redis zu ersetzen
Natürlich können Sie auch eine Schleife durchführen, ohne die beiden Parameter Redis::OPT_SCAN
und Redis::SCAN_RETRY
zu verwenden, um festzustellen, ob der Rückgabewert falsch ist, und die Durchquerung erfolgreich sein kann .
Weitere Redis-Kenntnisse finden Sie in der Spalte Redis-Datenbank-Tutorial.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Scan zum Ersetzen von Schlüsseln in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!