Heim > Datenbank > Redis > Hauptteil

So verwenden Sie Scan zum Ersetzen von Schlüsseln in Redis

藏色散人
Freigeben: 2020-01-28 14:06:32
nach vorne
3782 Leute haben es durchsucht

So verwenden Sie Scan zum Ersetzen von Schlüsseln in Redis

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(&#39;127.0.0.1&#39;, 6379, 10);
$redis->select(2);
$arr = [
    &#39;rwer&#39;,
    &#39;24erw&#39;,
    &#39;rterq4&#39;,
    &#39;sdgfd5&#39;,
    &#39;dgsdg&#39;,
    &#39;sfst&#39;,
];
for ($i=0; $i<1000; $i++) {
    $redis->set(md5($i.$arr[$i%6]), md5($arr[$i%6].&#39;sdfsd&#39;));
}
echo "OK".PHP_EOL;
Nach dem Login kopieren

Schlüssel Nummer anzeigen

keys c*

So verwenden Sie Scan zum Ersetzen von Schlüsseln in Redis

Scan verwenden, um Schlüssel in Redis zu ersetzen

Scan-Traverse

<?php
$redis = new \Redis();
$redis->connect(&#39;127.0.0.1&#39;, 6379, 10);
$redis->select(2);
$iterator = null;
// 遍历前缀
$pattern = &#39;c*&#39;;
$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;
Nach dem Login kopieren

Scan verwenden, um Schlüssel in Redis zu ersetzen

So verwenden Sie Scan zum Ersetzen von Schlüsseln in Redis

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!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage