当前位置:首页 > 文章列表 > 数据库 > Redis > Redis HELLO 怎样查看服务器协议与认证返回值

Redis HELLO 怎样查看服务器协议与认证返回值

来源:17golang原创 2026-11-03 04:52:24 0浏览 收藏

Redis 连接建立后,想确认服务端支持哪种 RESP 协议、当前连接属于哪个实例,或者想把认证和连接命名放进一次握手,应该看 HELLO。它不是只返回一个“连通”结果:Redis 官方文档说明,HELLO 可以切换 RESP2/RESP3,并返回版本、连接 ID、运行模式、角色和模块等属性。

官方地址:https://redis.io/docs/latest/commands/hello/

实用结论:普通探活继续用 PING;连接初始化或协议排障使用 HELLO 2、HELLO 3,需要认证时把 AUTH username password 放在同一条 HELLO 中。认证失败时连接不会切换到 RESP3,仍要按 RESP2 失败路径处理。

HELLO 负责什么:协议协商与连接初始化

Redis 6 及以后支持 RESP2 和 RESP3。新连接默认从 RESP2 开始,因此老客户端仍可工作;客户端明确发送 HELLO 3 后,才把当前连接切到 RESP3。HELLO 的时间复杂度是 O(1),它更像“连接能力说明 + 协议握手”,而不是业务数据命令。

Redis HELLO 连接入口与 RESP2 RESP3 协议结果的静态结构说明图
图1:Redis HELLO 握手结构说明图,查看协议选择、认证和连接属性的静态关系。

它和 PING 的分工可以这样记:

命令主要用途能得到什么
PING连通性探活简单的 PONG 或消息回显
HELLO连接初始化与能力确认协议版本、服务器属性、可选认证和连接名

用 redis-cli 读取协议和认证返回值

下面的命令只使用占位密码,适合先看命令形态。没有认证要求时,直接查询当前连接上下文;指定协议版本时,命令会同时协商协议。

# 查看当前连接的协议和服务器属性,不切换协议
redis-cli -h 127.0.0.1 -p 6379 HELLO

# 明确保持 RESP2,便于兼容旧客户端的返回处理
redis-cli -h 127.0.0.1 -p 6379 HELLO 2

# 请求 RESP3;连接名用于在连接列表中识别该客户端
redis-cli -h 127.0.0.1 -p 6379 HELLO 3 SETNAME article-reader

# 在新连接初始化时同时协商 RESP3 并认证;密码仅为示例占位符
redis-cli -h 127.0.0.1 -p 6379 HELLO 3 AUTH default 'YOUR_PASSWORD'

AUTH 只能跟在协议版本后面;SETNAME 等价于给当前连接设置名称。若服务端使用 Redis 6 以前的版本,可能返回未知命令;若协议版本不存在,则会返回协议错误。命令输出不要当成固定字段顺序,RESP2 和 RESP3 的呈现方式不同,客户端应按字段读取。

返回值怎样读:字段与失败状态

成功返回通常包含以下信息。server 表示服务端类型,version 是版本,proto 是当前协议;RESP3 还会返回 id、mode、role 和 modules 等连接或实例属性。

Redis HELLO 返回字段与协议认证失败边界的静态结构说明图
图2:Redis HELLO 返回字段结构说明图,查看属性字段与失败状态的边界。
# 只筛选返回中常用的协议、版本和角色字段,避免把整段输出写入日志
# 说明:示例使用文本过滤,生产程序应使用客户端库的结构化响应
redis-cli -h 127.0.0.1 -p 6379 --raw HELLO 3 | grep -E '^(server|version|proto|id|mode|role|modules)$'

这个过滤示例的目的只是帮助快速定位字段,不代表所有版本都按同样顺序输出。更稳妥的程序逻辑是:先判断命令是否成功,再读取 proto;把 server、version 作为诊断信息,把 id、mode、role 作为连接上下文。

认证失败和旧服务端怎样降级

当 HELLO 3 AUTH default wrong-password 的凭据不对时,服务端会返回错误,不会完成协议切换,连接仍处于 RESP2。客户端不要在收到失败后直接按 RESP3 解码下一条响应;应记录错误、关闭或修复连接,再从明确的 RESP2/RESP3 初始化路径重试。

兼容策略可以分成三类:

  • 服务端支持 HELLO 且支持 RESP3:发送 HELLO 3,成功后按 RESP3 处理。
  • 服务端支持 HELLO 但只接受 RESP2:发送 HELLO 2 或无参数 HELLO,并保持 RESP2 解码。
  • 服务端不认识 HELLO 或认证失败:把错误作为连接初始化失败,不把它混同为业务命令失败。

如果客户端库已经封装了连接握手,优先使用库提供的协议和认证配置;直接拼接命令时必须确保密码不进入普通日志,并在连接关闭或重建时重新设置 SETNAME。

常见问题

HELLO 能完全替代 PING 吗?

不能完全替代。HELLO 适合握手和能力确认,PING 更适合轻量连通性探活;监控探活不需要每次都切换协议或记录一整组连接属性。

为什么 HELLO 3 失败后仍像 RESP2?

因为协议切换只有在 HELLO 成功后才生效。协议版本不支持、命令不存在或 AUTH 失败都会让连接停留在原来的 RESP2 状态。

把 HELLO 放在连接初始化边界,先判断返回是否成功,再决定响应解码方式;把 server/version/proto 用作能力确认,把 id/mode/role 用作连接排障信息,就能避免把“认证成功”“协议切换成功”和“服务端可达”混成一个结论。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Redis consumer group 怎样查看待处理消息数量Redis consumer group 怎样查看待处理消息数量
上一篇
Redis consumer group 怎样查看待处理消息数量
Redis Functions 怎样在集群中预加载函数
下一篇
Redis Functions 怎样在集群中预加载函数
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    851次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    855次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    936次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    910次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    740次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码