Heim > Datenbank > Redis > Hauptteil

So löschen Sie Schlüssel stapelweise in PHP Redis

藏色散人
Freigeben: 2020-08-15 11:49:46
Original
5536 Leute haben es durchsucht

So löschen Sie Schlüssel in PHP Redis: Verwenden Sie zuerst den Scan-Befehl, um die Schlüssel mit dem Präfix [XX] schrittweise zu durchlaufen, und löschen Sie dann den angegebenen Schlüssel über die Unlink-Funktion.

So löschen Sie Schlüssel stapelweise in PHP Redis

Empfohlen: „Redis-Tutorial

PHP-Redis-Batch-Löschung von Schlüsseln

Zusammenfassung

Verwenden Sie den Scan-Befehl, um die Schlüssel schrittweise zu durchlaufen mit dem Präfix XX und dann Löschen

Einführung

In der tatsächlichen Entwicklung werden versehentlich einige nutzlose Daten in redis eingemischt. Beispielsweise vergisst ein großer Bruder, Cache-Zeit hinzuzufügen, oder die Datenstrukturliste muss aus geschäftlichen Gründen in zset geändert werden Bei Änderungen ist der vorherige Cache nutzlos, aber die Ablaufzeit ist etwas lang, sodass Sie die Schlüssel stapelweise löschen müssen. Wenn Sie den Befehl „keys“ verwenden, um die Schlüssel zu durchlaufen, die die Bedingungen erfüllen, werden andere Vorgänge von Redis blockiert, was in einer Produktionsumgebung definitiv nicht möglich ist, sodass der Befehl „scan“ als Killer verwendet wird.

Code

/**
  在redis集群中,scan命令需要指定节点。还需要注意,要连接主节点。
**/
$redis = new \Redis();
$timeout = 2.5;
$ip = '127.0.0.1';
$redisConfArr = [
    [$ip, 8001],
    [$ip, 8002],
    [$ip, 8003]
];
foreach ($redisConfArr as $redisConf) {
    $redis->pconnect($redisConf[0], $redisConf[1], $timeout);
    //默认SCAN_NORETRY情况下有可能会返回空数组,设置成SCAN_RETRY,如果是空数组的话,将不返回继续扫描下去
    $redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY);
    $it = NULL;
    while ($arr_keys = $redis->scan($it, CacheKeyConfig::CachePre.'*')) {
        if (is_array($arr_keys)) {
            //推荐使用unlink函数,非阻塞删除,删除大key时很好用,但是它需要redis版本>=4.0
            $result = $redis->del($arr_keys);
                echo $result . PHP_EOL;
        }
    }
    echo "OK!" . PHP_EOL;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo löschen Sie Schlüssel stapelweise in PHP Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!