Redis中用scan替换keys的方法
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,我们都知道查找 Redis 的键时,可以使用 keys pattern,但当 key 太多时,keys 命令的效率就很低,如果在线上直接使用,甚至可能发生生产事故,这时候,我们不妨使用 scan 命令
千家信息网最后更新 2025年01月25日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安全错误
数据库的锁怎样保障安全
桂林理工大学网络安全
中班幼儿网络安全游戏教案
降低企业面临的网络安全风险
cpu数据库选择
山东省大数据网络安全实验室
懂点网络技术做什么兼职
软件开发时期有哪几个阶段
上海大学 数据库原理2
网络安全家长心得200字
怎么查网站服务器ip
数据库原理 公开课
韩服dnf手游服务器正在维护中
网络安全法组织生活会
湖南 dns服务器
山西超频服务器销售价格
魔兽世界经典怀旧服玩哪个服务器
绝地求生怎么进入欧洲服务器
数据库太大打开软件慢
做网络安全工作月薪大概多少
宝安区网络技术转移代理价钱
华为数据库gaussdb命令
目前比较厉害的网络技术
龙岗软件开发定制
全球恐怖主义数据库怎么查
职场干货互联网科技时代
学电信网络技术上啥学校
吉林运营网络安全工程联系人
广东肇庆dns服务器云主机
网络安全态势动态感知中标
编程 用服务器cpu