Redis中用scan替换keys的方法
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,我们都知道查找 Redis 的键时,可以使用 keys pattern,但当 key 太多时,keys 命令的效率就很低,如果在线上直接使用,甚至可能发生生产事故,这时候,我们不妨使用 scan 命令
千家信息网最后更新 2025年11月12日Redis中用scan替换keys的方法
我们都知道查找 Redis 的键时,可以使用 keys pattern,但当 key 太多时,keys 命令的效率就很低,如果在线上直接使用,甚至可能发生生产事故,这时候,我们不妨使用 scan 命令。
SCAN 命令是一个基于游标的迭代器(cursor based iterator):
SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。
当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。
生成 key
connect('127.0.0.1', 6379, 10);$redis->select(2);$arr = [ 'rwer', '24erw', 'rterq4', 'sdgfd5', 'dgsdg', 'sfst',];for ($i=0; $i<1000; $i++) { $redis->set(md5($i.$arr[$i%6]), md5($arr[$i%6].'sdfsd'));}echo "OK".PHP_EOL;keys 查看个数
keys c*
Redis中使用scan替换keys
scan 遍历
connect('127.0.0.1', 6379, 10);$redis->select(2);$iterator = null;// 遍历前缀$pattern = 'c*';$count = 100;// 务必设置,如果没扫描到,继续扫描,而不是返回空,否则while直接退出,遍历就会不准确$redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY);$total = [];$i = 0;// $count可以不设置,非必需参数while($arr = $redis->scan($iterator, $pattern, $count)) { $arrVal = $redis->mget($arr); $ret = array_combine($arr, $arrVal); $total = array_merge($total, $ret); $i++;}// var_dump($total);var_dump($i);echo count($total).PHP_EOL;Redis中使用scan替换keys
当然你也可以不使用 \Redis::OPT_SCAN, \Redis::SCAN_RETRY 这两个参数,自行循环,判断返回值是不是 false,也能遍历成功。
以上就是Redis 中如何使用 scan 替换 keys的详细内容,更多请关注其它相关文章!
命令
游标
迭代
参数
用户
服务器
服务
成功
两个
个数
事故
内容
前缀
就是
效率
文章
更多
过程
在线
循环
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
杭州萧合网络技术有限公司
终焉誓约一区是哪一个服务器
南通网络安全审计系统咨询
关于净化网络安全的手抄报
图像处理 服务器要求
finecms 数据库
北京常用软件开发直销价格
数据库cache的概念和作用
公共事业管理如何与数据库结合
xb数据库设计
如果服务器托管在厂商的话
dns服务器四川电信服务器
建筑业安全数据库的作用
网络技术红宝书vpls
手机分身显示无法连接服务器
数据库优缺点优缺点
网站源码数据库
使命召唤端游如何在服务器上下载
深受顾客喜爱的数据库分库分表
网络安全周设立时间
广州皓也网络技术有限公司
我国网络安全产业
如何进行选型软件开发
普保科技互联网
下载数据库需要多大内存
如何设置手机不在服务器状态
传神翻译软件开发
扫描数据库图片比对
通讯软件开发博士招聘
服务器机箱电源拆解