php redis刪除key的方法:先使用scan指令增量迭代的方式遍歷出以【XX】為前綴的key;然後透過unlink函數刪除指定的key即可。
推薦:《redis教學》
php redis批次刪除key
摘要
使用scan指令增量迭代的方式遍歷出以XX為前綴的key,然後刪除
簡介
在實際開發中,一不小心redis就會混入一些無用的資料,例如某位大哥忘記給加上快取時間,或者因為業務修改需要將資料結構list改為zset,之前的快取就沒用了,但是過期時間有點長,這時候就需要批次刪除key。如果使用keys指令遍歷出符合條件的keys,會阻塞redis的其他操作,在生產環境是肯定不行的,於是祭出scan指令大殺器。
程式碼
/** 在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; }
以上是php redis批量刪除key的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!