• 技术文章 >数据库 >Redis

    php redis批量删除key的方法

    藏色散人藏色散人2020-08-15 11:49:46原创3490

    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中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:redis php
    上一篇:如何使用Redis实现排行榜功能 下一篇:redis如何设置开机自启动
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• Redis下载并安装• redis中set和hset的区别和使用场景• redis命令详解【附Redis命令操作手册】• 如何使用Redis实现排行榜功能
    1/1

    PHP中文网