• 售前

  • 售后

热门帖子
入门百科

php redis的scan用法实例分析

[复制链接]
123457814 显示全部楼层 发表于 2022-1-9 09:30:07 |阅读模式 打印 上一主题 下一主题
在删除缓存的时候,我们在一些场景下必要批量删除,但不确定具体的key值,可通过匹配的方式举行查询后删除。
但是使用keys会导致redis服务器宕机。慎用。。。
一般公司也会禁用keys等比较敏感的命令的。
以是工作中会使用scan命令来举行匹配查询
  1. SCAN cursor [MATCH pattern] [COUNT count]
复制代码
比如
  1. # 从游标 0 开始扫描 匹配 test1:* 的键值,一次扫描1000条
  2. scan 0 match test1:* count 1000
复制代码
  1. 1) 表示下一次扫描的游标值 ,命令行显示的是字符串类型的。
  2. 2)表示本次扫描匹配到的键值列表
复制代码
用php代码怎么实现呢,举个例子
  1. function getKeysByPattern($pattern)
  2. {
  3.     $keysList = [];
  4.     while(true){
  5.         //@todo 这里的client替换为自己的redis客户端对象
  6.         $keys = $client->scan($iterator, $pattern,1000);
  7.         $keysList = array_merge($keysList, $keys??[]);
  8.         if ($iterator === 0) {//迭代结束,未找到匹配pattern的key
  9.             break;
  10.         }  
  11.         if ($iterator === null) {//"游标为null了,重置为0,继续扫描"
  12.             $iterator = "0";
  13.         }
  14.     }
  15.     $keysList = array_unique($keysList);
  16.     return keysList;
  17. }
复制代码
内容扩展
php redis扩展支持scan命令实现方法
  1. # git clone https://github.com/phpredis/phpredis
  2. # cd phpredis
  3. # /opt/php/bin/phpize
  4. # ./configure --with-php-config=/opt/php/bin/php-config
  5. # make && make install
复制代码
到此这篇关于php redis的scan用法实例分析的文章就介绍到这了,更多相关php redis的scan用法内容请搜索草根技术分享从前的文章或继承欣赏下面的相关文章渴望大家以后多多支持草根技术分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作