php redis批量删除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的方法的详细内容,更多请关注小潘博客其它相关文章!