php?redis的scan用法实例分析

 更新时间:2022-01-27 14:12:19   作者:佚名   我要评论(0)

在删除缓存的时候,我们在一些场景下需要批量删除,但不确定具体的key值,可通过匹配的方式进行查询后删除。
但是使用keys会导致redis服务器

在删除缓存的时候,我们在一些场景下需要批量删除,但不确定具体的key值,可通过匹配的方式进行查询后删除。

但是使用keys会导致redis服务器宕机。慎用。。。

一般公司也会禁用keys等比较敏感的命令的。

所以工作中会使用scan命令来进行匹配查询

SCAN cursor [MATCH pattern] [COUNT count]

比如

# 从游标 0 开始扫描 匹配 test1:* 的键值,一次扫描1000条
scan 0 match test1:* count 1000

1) 表示下一次扫描的游标值 ,命令行显示的是字符串类型的。
2)表示本次扫描匹配到的键值列表

用php代码怎么实现呢,举个例子

function getKeysByPattern($pattern)
{
    $keysList = [];
    while(true){
        //@todo 这里的client替换为自己的redis客户端对象
        $keys = $client->scan($iterator, $pattern,1000);
        $keysList = array_merge($keysList, $keys??[]);
        if ($iterator === 0) {//迭代结束,未找到匹配pattern的key
            break;
        }  
        if ($iterator === null) {//"游标为null了,重置为0,继续扫描"
            $iterator = "0";
        }
    }
    $keysList = array_unique($keysList);
    return keysList;
}

内容扩展

php redis扩展支持scan命令实现方法

# git clone https://github.com/phpredis/phpredis
# cd phpredis
# /opt/php/bin/phpize 
# ./configure --with-php-config=/opt/php/bin/php-config 
# make && make install

到此这篇关于php redis的scan用法实例分析的文章就介绍到这了,更多相关php redis的scan用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • php redis扩展支持scan命令实现方法

相关文章

  • PHP7中对十六进制字符串处理的问题详解

    PHP7中对十六进制字符串处理的问题详解

    本篇文章由PHP7教程栏目给大家介绍一下关于 php7 中 "0xFFFFFFFF" 和 0xFFFFFFFF 的问题。有一定的参考价值,有需要的朋友可以参考一下,希望
    2022-01-27
  • php?redis的scan用法实例分析

    php?redis的scan用法实例分析

    在删除缓存的时候,我们在一些场景下需要批量删除,但不确定具体的key值,可通过匹配的方式进行查询后删除。 但是使用keys会导致redis服务器
    2022-01-27
  • PHP中 empty() 和 isset() 的区别介绍

    PHP中 empty() 和 isset() 的区别介绍

    目录二者共同点二者区别1、对于未设置的变量的判断2、对于 "" (空字符串) 的判断3、对于 0 (作为整数的0) 的判断4、对于 0.0 (作为浮点数的0
    2022-01-27
  • 新版php?study根目录下文件夹无法显示的图文解决方法

    新版php?study根目录下文件夹无法显示的图文解决方法

    ?Options Indexes FollowSymLinks ExecCGI? ? ? ? ? 1? 添加Indexes 2? 删除掉index.html? ? 希望可以帮到大家。? ? ? 到此这篇关于新版php
    2022-01-27
  • PHP实现JWT的Token登录认证

    PHP实现JWT的Token登录认证

    1、JWT简介 JSON Web Token(缩写 JWT),是目前最流行的跨域认证解决方案。 session登录认证方案:用户从客户端传递用户名、密码等信息,服
    2022-01-27
  • php项目接入xxl-job调度系统的示例详解

    php项目接入xxl-job调度系统的示例详解

    目录1.?部署xxl-job调度中心2. 整合xxl-job调度系统2.1 创建执行器项目2.2 新增执行器?2.3 部署执行器项目2.4 新增GLUE模式任务2.5 编写php代
    2022-01-27
  • php判断时间戳是否为今天实例讲解

    php判断时间戳是否为今天实例讲解

    ?本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑 php判断指定时间戳是不是今天的方法 实现思想: 使用date()格式化今天的日期,
    2022-01-27
  • PHP基础用法讲解及phpinfo();演示

    PHP基础用法讲解及phpinfo();演示

    在这个abc.php文件中写入如下代码。 <&#63;php phpinfo(); &#63;> 你将会看到一个网页,网页内容通常,如下图所示: 用中文翻译这句
    2022-01-27
  • PHP7 preg_replace 出错及解决办法

    PHP7 preg_replace 出错及解决办法

    问题描述: PHP7废弃了preg_replace? 原本是中php5中处理url中后面参数替换清除的,代码如下 $url = preg_replace('/([&#63;&])src=[^&]+
    2022-01-27
  • php实现ffmpeg处理视频的实践

    php实现ffmpeg处理视频的实践

    最近有一个项目需要使用ffmpeg处理视频,这里我写了一个demo,方便我们来实现视频操作 ffmpeg操作demo <&#63;php namespace common\helpe
    2022-01-27

最新评论