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.
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; }
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!