成都创新互联网站制作重庆分公司

php中redis批量删除key的方法是什么

小编给大家分享一下php中redis批量删除key的方法是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

目前创新互联已为近1000家的企业提供了网站建设、域名、网站空间、网站托管、服务器租用、企业网站设计、伍家岗网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

php redis删除key的方法:首先使用scan命令增量迭代的方式遍历出以【XX】为前缀的key;然后通过unlink函数删除指定的key即可。

php中redis批量删除key的方法是什么

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中redis批量删除key的方法是什么
本文路径:http://cxhlcq.com/article/pjcdpg.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部