千家信息网

如何理解Redis的keys命令

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"如何理解Redis的keys命令",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何理解Redis的keys命令"吧!keys命令的用法:
千家信息网最后更新 2025年01月19日如何理解Redis的keys命令

本篇内容主要讲解"如何理解Redis的keys命令",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何理解Redis的keys命令"吧!

keys命令的用法:

keys pattern

查找符合正则匹配的key的列表。扫描对象是Redis服务中所有的key,想想都很慢对不对?
同时执行keys命令的同时,Redis进程将被阻塞,无法执行其他命令,假如超过了哨兵的down-after-milliseconds配置,还会进行主从切换,切换过程中,如果主节点恢复正常,还可能出现脑裂等一系列问题。

所以,生产环境中,建议直接禁用keys命令。

Keys命令的替代方案

1、scan扫描,避免阻塞
2、将需要统计的数据放入一个set中 (但是这样可能出现Big Key问题,一般数据量大就不推荐)

Keys命令在Redis Cluster中是怎样执行的?

一般来说,keys命令对于集群节点来说,是不知道路由到哪个节点的,不像 get命令。在Java的Jedis客户端的JedisClusterKeyCommands类中,我们看到:

   public Set keys(byte[] pattern) {                // 在每个节点执行keys命令                Collection> keysPerNode = connection.getClusterCommandExecutor()                                .executeCommandOnAllNodes((JedisClusterCommandCallback>) client -> client.keys(pattern))                                .resultsAsList();                // 合并成一个整体后返回                Set keys = new HashSet<>();                for (Set keySet : keysPerNode) {                        keys.addAll(keySet);                }                return keys;        }

我们看到,Jedis是通过在每个节点上执行keys命令,并将结果合并返回的。

本文既然将keys命令的慢,那么他到底有多慢呢?

Keys命令到底有多慢?

这里主要是给大家一个基本的概念,并不是深入剖析。


这是腾讯云上Redis集群服务中,慢查询的日志。我们看到,Keys命令大概执行了250ms ~ 300ms。


根据节点信息,我们看到,每个节点存储了大约153w的key,占用内存300M+,平均每个键值对占用内存0.208KB,合213个字节

根据我的理解,既然keys命令返回的是key值,而集群中其实有一个结构slots_to_keys 记录着所有key 的, 这只与key的数量有关,与Big key的关系不大。

按照这种猜想,假如此时Redis节点占用内存为3G,且Key数量成比例,那么Keys命令执行时间因为3s左右,这段时间Redis节点是阻塞的。

到此,相信大家对"如何理解Redis的keys命令"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

命令 节点 内存 集群 阻塞 内容 同时 数据 数量 时间 问题 切换 学习 服务 查询 不对 实用 更深 一般来说 不大 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 战地5服务器性能什么意思 融创隐溪晓院读数据库中学 数字化智能工厂网络安全 浪潮服务器的滑道如何安装 优点服务器插硬盘 校园服务器维修视频教程 苹果连接电脑恢复数据库 本地服务器部署入门 穿越火线连接服务器时间长 网络安全公司怎样盈利 软件开发培训学校哪家好6 三级计算机网络技术真题 国家网络安全一万字论文 许可证服务器关机或未响应 佛山科学技术学院数据库考试 医保网络安全宣传标语 oracle数据库添加数据语句 双屏互动触摸软件开发 联想服务器硬盘指示灯不亮 查询数据库的字符集oracle 澳洲国立大学网络安全专业 网络安全回心答 长春中关村有回收服务器 数据库授权角色 查询数据库中信息表中所有内容 服务器存储数据丢失 网络技术公司在东莞 cis网络安全创新大会 首届 网络安全技术有哪些特性 济宁网络安全员招聘
0