php?redis的scan用法实例分析

 更新时间:2022-01-08 17:17:30   作者:佚名   我要评论(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命令实现方法

相关文章

  • php?redis的scan用法实例分析

    php?redis的scan用法实例分析

    在删除缓存的时候,我们在一些场景下需要批量删除,但不确定具体的key值,可通过匹配的方式进行查询后删除。 但是使用keys会导致redis服务器
    2022-01-08
  • php中的标量数据类型总结

    php中的标量数据类型总结

    PHP 的数据类型可以分为三大类,分别是标量数据类型、复合数据类型和特殊数据类型。 其中,标量数据类型是数据结构的最基础单元,只能存储一
    2022-01-08
  • Vue实现页面的局部刷新(router-view页面刷新)

    Vue实现页面的局部刷新(router-view页面刷新)

    利用Vue里面的provide+inject组合 首先需要修改App.vue。 <template> <!-- 公司管理 --> <div class="companyManage"> <router-
    2021-12-31
  • oracle中commit之后进行数据回滚的方法

    oracle中commit之后进行数据回滚的方法

    commit之后 第一种: 记住大概的时间,获取前大概时间的数据。 select * from Test as of timestamp to_timestamp('2021-12-08 09:30:56',
    2021-12-31
  • vue 中使用 bimface详情

    vue 中使用 bimface详情

    目录1. 安装 vue 脚手架2. 创建项目3. 引入 bimface 文件3.1 运行项目 3.2 引入 bimface 文件 4. 实现页面渲染4.1 修改 html 4.2 修改 CS
    2021-12-31
  • 关于SpringBoot使用@Async的总结

    关于SpringBoot使用@Async的总结

    目录SpringBoot使用@Async总结如下方式会使@Async失效SpringBoot实现异步(Async)接口1. 启动类引入@EnableAsync注解2. 建立异步任务类3. 建立
    2021-12-28
  • 强制去除Unity自动添加的Android隐私权限

    强制去除Unity自动添加的Android隐私权限

    提审Google Play会遇到隐私权限的问题,最好把非必要隐私权限清理干净。GF框架DebugComponent组件中涉及Input.location API调用,Unity打包时
    2021-12-28
  • JavaScript实现语音排队叫号系统

    JavaScript实现语音排队叫号系统

    目录介绍主要功能效果展示关键代码介绍 语音排队叫号系统广泛用于银行,餐饮,医院等场景。本系统采用Layui框架完成,前端体验不错,基于角色
    2021-12-28
  • vue+elementUI实现内嵌table的方法示例

    vue+elementUI实现内嵌table的方法示例

    在大四实习工作中碰到一个比较特别的需求,要求在一个 table 表格中点击一条数据的编号,在该条数据下方出现一个新的 table 表格。这个需求
    2021-12-28
  • idea中lombok的用法

    idea中lombok的用法

    IntelliJ IDEA是一款非常优秀的集成开发工具,功能强大,而且插件众多。lombok是开源的代码生成库,是一款非常实用的小工具,我们在编辑实体
    2021-12-28

最新评论