Redis中用scan替换keys的方法
发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,我们都知道查找 Redis 的键时,可以使用 keys pattern,但当 key 太多时,keys 命令的效率就很低,如果在线上直接使用,甚至可能发生生产事故,这时候,我们不妨使用 scan 命令
千家信息网最后更新 2024年11月20日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安全错误
数据库的锁怎样保障安全
乐速海盟网络技术有限公司
深圳第三方软件开发哪家实惠
书籍gps软件开发教程
滨州全球软件开发大会
访问ipv6服务器
联想服务器连接管理口
数据库的固定角色分为固定
提供好的网络安全零信任安全
河南综合软件开发均价
利用流量共享服务器
通达oa连接数据库密码
移动网络技术有什么用
万方数据库收录期刊频率
数据库现在的时间怎么表达
网络安全主管简称
网络安全经费投入不足
网络安全教育总结50字
上海网络技术原理
百度 网络安全
服务器告警灯
安监部门嵌入式软件开发好跳槽吗
怎么搭建服务器机器
网络技术岗位招聘
网络安全感怎么写200字左右
web数据库对应漏洞
网络安全为啥要学php
昆仑能源网络安全管理
网络安全标语卡片
ping命令连接不上服务器
信号很好但无法连接服务器