一文带你玩转 Redis 的 RESP 协议 !

Redis GUI—— RESP的安装和连接服务器 不过该仓库提供的是RedisDesktopManager的源码,并未提供windows安装包。 阅读详情

RESP 是 Redis 客户端与 Redis 服务器相互通信时使用的一个协议, 全称 REdis Serialization Protocol ,即 redis 串行协议,通俗易懂,也表明了 redis 的特点,串行化(单线程)

注意: RESP 协议是一个应用层协议,也就是说它的底层还是依赖于 tcp/ip

RESP 的设计哲学

Redis 的作者在设计 RESP 协议,制定了下面的三条原则:

  1. 实现要简单
  2. 对计算机来说,解析速度快
  3. 对人类来说,可读性强

请求报文格式

Redis 客户端请求服务器时,报文格式非常简单,模板如下(注意:这里为了方便查看,CRLF 后面我还进行了手动换行,实际上是没有的)

*<参数数量>CRLF
$<参数1的字节长度>CRLF
<参数1的数据>CRLF
...
$<参数N的字节长度>CRLF
<参数N的数据>CRLF

其实就3个要素,参数的总个数,参数的字节长度、参数数据

例如,启动 redis-cli 客户端,发送一条命令:

set key1 value1

则这条命令对应的 RESP 协议报文内容为

*3CRLF$3CRLFsetCRLF$4CRLFkey1CRLF$6CRLFvalue1

为了方便我们人类查看,我将 CRLF 控制字符打印出来

*3
$3
set
$4
key1
$6
value1

附上注释

*3 //* 表示报文的开始,3 表示有三个参数,分别是 set、key1、value1
$3 // $3 表示第一个参数长度为 3 个字节
set  // 一个参数
$4 // 第二个参数长度为 4 个字节
key1 // 第二个参数
$6 // 第三个参数长度为 6 个字节
value1 // 第三个参数

客户端请求报文就是这么简单

响应报文格式

请求报文的格式只有一种,但响应报文的格式就多种多样了

简单字符串回复

简单字符串回复只有一行回复,回复的内容以 + 作为开头,不允许换行,并以 \r\n 结束。有很多指令在执行成功后只会回复一个 OK,使用的就是这种格式,能够有效的将传输、解析的开销降到最低。

例如上面的

set key1 value1

假设执行成功,返回报文为

+OKCRLF

错误回复

在 RESP 协议中,错误回复相当于简单字符串回复的变种形式,它们之间的格式也非常类似,区别只有第一个字符是以 - 作为开头,错误回复的内容通常是错误类型及对错误描述的字符串。

错误回复出现在一些异常的场景,例如当发送了错误的指令、操作数的数量不对时,都会进行错误回复。在客户端收到错误回复后,会将它视为异常。

例如

set1 key1 value1

由于没有 set1 这个命令,所以返回错误报文

-ERR unknown command `set1`, with args beginning with: `key1`, `value`,CRLF

整数回复

整数回复的报文非常简单

:数字CRLF

一般出现在用户执行 exists、 incr、llen 等返回结果是数值或布尔类型的命令时,例如

exists key1

的回复报文为

:1CRLF

批量回复

批量回复的报文,模板如下

$<内容长度>CRLF
<内容>CRLF

它以 $ 作为开头,后面是发送的字节长度,然后是 CRLF,然后发送实际的数据,最终以 CRLF 结束。如果没有要回复的信息,那么回复长度为 -1。

举例

get key1

的回复报文为

$6CRLF
value1CRLF
get key2

的回复报文为

$-1CRLF

多条批量回复

多条批量回复的报文与客户端请求报文一模一样

*<参数数量>CRLF
$<参数1的字节长度>CRLF
<参数1的数据>CRLF
...
$<参数N的字节长度>CRLF
<参数N的数据>CRLF

多见于获取 hash、set、list 等类型的相关数据时,例如

lrange key2 0 -1

的回复报文为

*2
$3
123
$6
123456
Redis开发效率翻倍:用RESP.app可视化工具玩转Streams/Cluster高阶功能 本文介绍了如何利用RESP.app可视化工具,显著提升Redis开发与运维效率。文章重点解析了该工具如何将复杂的Streams消息队列监控、Cluster集群管理及ReJSON等高级功能转化为直观的图形界面操作,帮助开发者告别命令行迷雾,实现高效的数据洞察、问题排查和集群治理。 阅读详情

相关推荐

5个真实案例带你玩转SSRF漏洞利用:从内网扫描到Redis未授权访问

本文深入解析SSRF漏洞的高级利用技术,通过5个真实案例展示从内网扫描到Redis未授权访问的攻击链构造。详细拆解漏洞原理、协议处理技巧(如FastCGI注入和Gopher协议利用)以及多层级防御策略,帮助安全人员全面掌握SSRF攻防实战技能。

garlic的博客 720

Redis的图形化客户端(RESP)的安装及使用

redisDesktopManager redis

qq_47701945的博客 1万+

别再只当缓存用了!用Lettuce玩转Redis 6.x的Stream、JSON等新特性(Java代码示例)

本文深入探讨了如何利用Lettuce客户端充分发挥Redis 6.x的Stream、JSON等新特性,通过Java代码示例展示了构建可靠消息系统、处理文档数据及安全增强的实践方法,帮助开发者突破传统缓存思维,实现Redis作为多模数据库的高阶应用。

weixin_31155097的博客 365

【高阶篇】3.1 Redis协议(RESP )详解

当我们谈论 Redis 时,一般来说,我们讨论的核心是它用来存储和检索数据的多种数据结构:字符串、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)和散列表(Hashes)等。但是,这些操作必须通过一定的协议来执行,这个协议就是Redis协议 (RESP, Redis Serialization Protocol)。RESP 是一个简单而强大的协议,设计得非常易于理解和实现,几乎可以说是目前中间件中最简单的一种协议。这也是 Redis 受到广泛欢迎的一部分原因。

日拱一卒无有尽,功不唐捐终入海 6653

SSRF漏洞实战:从内网探测到Redis、FastCGI攻击与高级绕过技巧

服务端请求伪造(SSRF)是一种常见的Web安全漏洞,其核心原理在于攻击者能够诱使服务器向任意内部或外部网络地址发起非预期的请求。这种能力的技术价值在于穿透网络边界,将原本仅暴露于外网的Web应用,转变为攻击内网关键系统(如数据库、缓存服务、管理后台)的跳板。在工程实践中,SSRF常被用于内网资产发现、端口扫描,并进一步结合特定协议(如Gopher、Dict)攻击Redis、Memcached、FastCGI/PHP-FPM等高危服务,最终实现权限获取与横向移动。本文通过真实案例,深入剖析了如何利用SSRF

weixin_34314962的博客 434

从零构建企业微信机器人:合规方案、核心原理与AI集成实战

聊天机器人作为自动化流程与智能交互的核心技术,其实现原理主要基于API接口与消息协议。通过模拟或调用官方接口,机器人能够实现消息的接收、解析、处理与回复,从而在社群管理、客户服务、工作流触发等场景中创造技术价值。本文聚焦于微信生态下的机器人开发,对比分析了Web协议模拟、客户端控制与商业API三种主流方案,并深入剖析了基于企业微信API的合规实现路径。该方案利用Access Token机制进行身份认证,通过配置消息回调服务器完成事件驱动架构,最终可扩展集成大语言模型(如DeepSeek)以实现智能对话。文章

快马扬鞭须努力! 773

Redis客户端-RESP的简简单单介绍

不能编写自定义的qq/王者农药客户端,因为他们并没有公开协议的,但是网上还是有一些自定义的qq自定义的客户端啊?这是因为通过一些抓包/逆向手段,猜测qq的应用层协议是啥样的,猜多猜少靠水平+运气了。

求你们看我的博客 1249

Redis Desktop Manager免费版图形化管理工具实战使用

Redis Desktop Manager 看似只是一个 GUI 工具,但它实际上融合了协议理解、安全设计、性能优化和用户体验等多个维度的工程智慧。它不仅能帮你提高效率,更能降低误操作风险,提升团队协作的一致性。下次当你又要打开终端输入的时候,不妨试试 RDM —— 也许你会发现,原来管理 Redis 也可以这么轻松又安心 ❤️。本文还有配套的精品资源,点击获取。

weixin_42587866的博客 637

【解决】RESP.app GUI for Redis 连接不上redis服务器

端口未开放,导致连不上

qq_32139191的博客 6019

WIndows Redis可视化工具:resp-2022.1.0.0 GUI

Windows Reids可视化工具RESP 版本2022.1的安装包。一款比较稳定简洁的 redis UI 工具。

RESP.app GUI for Redis离线安装包下载

RESP.app GUI for Redis离线安装包下载(原Redis Desktop Manager)

Redis AOF深度解析:从原理到实战,一篇文章搞定!

作为Redis的两大持久化机制之一(另一位是RDB),AOF(Append Only File)凭借“记录写操作日志”的特性,在数据安全性上有着天然优势。很多小伙伴在使用Redis时,或多或少听说过AOF,但可能对其底层原理、工作流程、重写机制等细节一知半解。今天咱们就来彻底扒开AOF的“外衣”,从0到1搞懂它到底是怎么工作的,以及如何在生产环境中玩转它!

weixin_42148384的博客 1136

细说STM32单片机SPI-Flash芯片的FatFS移植及其应用实例详解

本文以开发板上的SPI-Flash芯片W25Q16为媒介详细介绍CubeMX中FatFS各个参数的意义和设置,分析生成的代码中FatFS各个文件的作用和关联,完成针对W25Q16的硬件访问层的移植。继续使用旺宝红龙开发板STM32F407ZGT6 KITV1.0。

wenchm的博客 1646

玩转SpringBoot之捣鼓 Redis

阅读正文: 我们都知道,把首页数据放到Redis里,能够加快首页数据的访问速度。但是我们要如何准确又快速的将 Redis 整合到自己的 SpringBoot2.x 项目中呢?今天阿淼就带大家爬一爬其中的门门道道。 序、Redis 介绍 Redis 使用了浪费流量的文本协议,但因为它数据存储在内存中的,相对而言,依然可以取得极高的访问性能。并且 Redis 是线程安全的。 RESP 就是 Redis 序列化协议的简称。它是一种直观的文本协议,优势在于实现异常简单,解析性能极好。 Redis 协议里面虽然有大量

m0_68064743的博客 176

从ISO 17987到SAE J2602:LIN一致性测试标准全景解读与CANoe实现

本文深入解析了从ISO 17987到SAE J2602的LIN一致性测试标准技术演进,详细对比了两大标准体系的技术差异,并基于Vector CANoe平台演示了如何构建符合最新行业要求的自动化测试方案。文章重点介绍了SAE J2602标准的三大改进点,包括唤醒特性、传输层协议和诊断服务的增强测试要求,并提供了CANoe测试环境配置、测试模块集成及测试案例解析的实战指南。

app77的博客 338

Python爬虫实战:巧用HEAD请求和Cookie令牌绕过沃尔玛反爬(附完整代码)

本文详细介绍了如何利用Python爬虫技术,通过HEAD请求和Cookie令牌绕过沃尔玛的反爬机制。文章深入解析了人机验证系统的运作原理,并提供了完整的工程化实现代码,包括令牌池设计、高并发架构和异常处理策略,帮助开发者高效采集电商数据。

weixin_29046035的博客 1016

Redis-py 实战指南:从安装到向量索引,Python 操作 Redis 全解析

今天我们从 redis-py 的安装开始,逐步讲解了基础连接、集群与 TLS 安全连接、客户端缓存优化,再到 JSON / 哈希文档的索引查询,最后实战了向量索引与语义查询。这些内容基本覆盖了 redis-py 的核心用法,无论是日常开发还是进阶场景,应该都能帮到你。

佑瞻的博客 1370

osgEarth实战:5分钟搞定3DTiles模型加载(附完整配置代码)

本文提供了一份osgEarth加载3DTiles模型的实战指南。通过详解核心Earth文件配置与精简的C++集成代码,帮助开发者快速在三维地球场景中集成倾斜摄影与BIM等海量模型,并分享了性能调优与常见问题排查技巧,有效提升开发效率。

jjj34的博客 480

秋招面试!玩转Redis,这份腾讯云大神亲自码出的《redis深度笔记》帮你吊打面试官!轻松拿下offer!!

1.分布式锁分布式锁超时问题可重入性2.延时队列异步消息队列?队列空了怎么办?队列延迟空闲连接自动断开锁冲突处理延时队列的实现进一步优化3.位图基本使用统计和查找魔术指令 bitfield使用方法pfadd这个pf是什么意思?pfmerge适合什么场合用?注意事项HyperLogLog实现原理pf的内存占用为什么是12k?5.布隆过滤器布隆过滤器是什么?Redis中的布隆过滤器布隆过滤器的基本使用注意事项布隆过滤器的原理。

weixin_66896902的博客 139

【OpenClaw从入门到精通】第17篇:OpenClaw巨头布局实战:阿里CoPaw/腾讯云/百度/火山引擎深度拆解(2026实操版)

2026年OpenClaw以22.8万星标登顶GitHub,引发阿里、腾讯、百度、字节等互联网巨头入局角逐。本文基于公开技术文档与实测经验,深度解析四大巨头的OpenClaw布局战略:阿里云CoPaw的全栈托管、腾讯云的流量入口绑定、百度智能云的搜索生态内嵌、火山引擎的极致智力供给。从核心原理、算法构建、实操流程三个维度,提供可直接落地的接入方案,包含完整代码示例与执行结果验证。通过流程图可视化核心架构,搭配避坑指南与选型矩阵,帮助新手快速上手、进阶读者实现多厂商协同部署。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1685

XSS漏洞之PDF生成:从XSS到服务端任意文件读取

XSS是最为常见的Web漏洞之一,多年来连续入选OWASP TOP10,相信大家都耳熟能详。 它是一种代码注入类的攻击,是一种客户端侧的攻击,攻击者通过在Web应用中注入恶意JavaScript代码,通过点击URL,最终在受害者浏览器端执行的一种漏洞。主要有反射型XSS、存储型XSS、基于DOM的XSS三类。XSS一些比较常规的危害大概有:重定向浏览器、窃取Cookie、浏览器劫持等。本文章侧重于发现XSS后的进一步利用。 主要介绍在某次实际测试过程中,发现XSS漏洞之后,如何进一步的利用,最终通过XSS达

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 3782

SharpKeys 键位重映射指南:三步把 Caps Lock 改成你想要的按键

打字时 Caps Lock 指示灯突然亮起,一整段文字要删掉重打——这可能是 Windows 键盘上最恼人的小麻烦。SharpKeys 是一款免费开源的 Windows 键位重映射工具:它不拦截按键,而是把映射关系写进 Windows 开机时自己读取的注册表键 `Scancode Map`,之后按键的"翻译"由系统完成,不需要后台常驻进程。从 Windows 2000 到 Windows 11,这

gitblog_00787的博客 212

《QEMU/KVM源码分析与应用》读书笔记1 —— 第1章 QEMU与KVM概述

《QEMU/KVM源码分析与应用》学习笔记1 —— 第一章 QEMU与KVM概述

phmatthaus的专栏 1988

Redis面试必杀技:从青铜到王者的20道灵魂拷问(附实战解析)

Redis可不是只会做缓存的小可爱,用好了它就是瑞士军刀!建议大家在本地搭建集群环境,把主从复制、哨兵模式、Cluster模式都玩一遍。记住,能说清楚底层原理的才是真大佬!(🤝 互动时间:你在面试中被问过最刁钻的Redis问题是什么?评论区见!

xiaoweiaixuexi8的博客 361

AI Agent驱动的多模态情感分析方法:从BERT到Vision Transformer的探索

情感分析(Sentiment Analysis)是自然语言处理(NLP)与计算机视觉(CV)中一项重要任务。传统的情感分析主要依赖于文本数据,但在现实应用中,情感往往通过 语言、语音、表情、姿态 等多模态信号共同传达。因此,结合 多模态深度学习 的 AI Agent 在情感理解中具有广阔的前景。

一键难忘的博客 740

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

基于Python与Flask构建个人新闻聚合系统:从爬虫到部署全流程实践

网络爬虫技术作为数据采集的核心手段,其原理是通过模拟浏览器行为自动抓取并解析网页内容,实现信息的自动化收集。这项技术在数据挖掘、舆情监控和市场分析等领域具有重要价值,尤其适用于构建个性化的信息聚合平台。本文聚焦于利用Python生态中的Requests、BeautifulSoup等库实现网页抓取与解析,并结合Flask框架搭建后端API,通过编写可配置的抓取规则(即“爪子”)来定制数据源。项目实践涵盖了从环境搭建、规则编写、数据清洗存储,到前端展示(Vue.js)与系统部署(Nginx + Gunicorn

weixin_30493401的博客 346

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: Java十九个技术栈常见面试题分享(附答案解析)
下一篇: 亲自动手绘图——红黑树,我不信还手撕不清楚
JavaCaiy
博客等级 码龄6年 1万+粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值