千家信息网

Redis中用scan替换keys的方法

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,我们都知道查找 Redis 的键时,可以使用 keys pattern,但当 key 太多时,keys 命令的效率就很低,如果在线上直接使用,甚至可能发生生产事故,这时候,我们不妨使用 scan 命令
千家信息网最后更新 2026年11月03日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安全错误 数据库的锁怎样保障安全 互联网巨头反垄断金融科技 杭州互联网科技公司 互联网科技的未来发展 互联网科技汛 深圳市运趣互联网科技有限公司 天速互联网络科技有限公司 恒银科技与互联网金融 广州慧亚互联网科技怎么样 中国的互联网科技企业的崛起 互联网软件和科技 崇明区互联网教育科技诚信经营 移动互联网年度科技创新 青海科技产业互联网发展 企晟互联网信息科技有限公司 银行科技岗属于互联网吗 全球科技与互联网公司市值变化 互联网科技接地气 互联网科技的前景 互联网金融金融科技 科技互联网企业在行动 鸠鸠互联网科技 互联网科技卖菜 猪兼强互联网科技 苏州互联网科技贷款公司 央行互联网金融科技公司 滨湖区互联网智能科技产品有哪些 银行科技岗属于互联网吗 中天科技中国工业互联网 南京一网一红互联网科技有限公司 伍佰万互联网科技是干嘛的
0