千家信息网

Redis 协议的示例分析

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要介绍Redis 协议的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Redis实例运行于单独的进程,应用系统和Redis通过Redis协议进行交互。在Red
千家信息网最后更新 2025年01月24日Redis 协议的示例分析

这篇文章主要介绍Redis 协议的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Redis实例运行于单独的进程,应用系统和Redis通过Redis协议进行交互。在Redis协议之上,客户端和服务器可以实现多种典型的交互模式:串行的请求/响应模式、双工的请求/响应模式(pipeline)、原子化的批量请求/响应模式(事务)、发布/订阅模式、脚本化的批量执行(脚本模式)

客户端/服务器协议

Redis的交互协议分为两部分:网络协议和序列化协议

网络交互

Redis协议位于TCP连接之上,即客户端和Redis实例保持双工的连接

客户端和服务器交互的内容是序列化后的相应类型的协议数据,服务器为每个客户端建立对应的连接,在应用层维护一系列状态保存在上图的connection中,connection间相互无关联。在Redis中,connection通过redisClient结构体实现

序列化协议

在Redis中,协议数据分为不同的类型,每种类型的数据均以CRLF(\r\n)结束,通过数据的首字符区分类型

inline command

这类数据表示Redis命令,首字符为Redis命令名的字符

simple string

首字符为'+',后续字符为strig的内容,且该string不能包含'\r'或'\n'两个字符,最后以'\r\n'结束

simple string本身不含转义,所以客户端的反序列化效率很高,直接将'+'和最后两个字节'\r\n'之间的内容拷贝即可

bulk string

对于string本身含有'\r'或'\n'的情况,解法有两种:转义和长度自描述。转义反序列化效率低下,Redis采用的是长度自描述,称为bulk string

bulk string的首字符为'$'紧随其后的是string数据的长度'\r\n'之后紧跟着string的内容本身(可以包含包括'\r'和'\n'在内的特殊字符),最后以'\r\n'结束。

"$12\r\nhello\r\nworld\r\n" 这19个字节描述了hello\r\nworld这个两行的string。

对于""空字符串和null,通过'$'之后的数字进行区分:

  • "$0\r\n\r\n" 这6个字节表示空字符串

  • "$-1\r\n" 这5个字节表示null

error

Redis中error类型的数据的内容就是一个普通的string,但是和普通的string的区别是error的首字符是'-'。客户端直接通过首字符即可判断本次交互是否出错

integer

以':'开头,紧跟着整形数字本身,最后以'\r\n'结尾。":13\r\n"表示整数13。

array

以'*'开头,紧跟着数组的长度,'\r\n'之后就是数组中每个元素序列化的数据。"*2\r\n+abc\r\n:9\r\n"表示["abc", 9]。

数组长度为0或者-1分别表示空数组或null

数组元素本身也可以是数组,多级数组是树状结构,采用类似先序遍历的方式序列化。 "*2\r\n*2\r\n:1\r\n:2\r\n*1\r\n+abc\r\n"表示[[1, 2],["abc"]]。

C/S使用的协议数据类型

客户端发送给服务的类型:inline command、由bulk string组成的array。服务端发送给客户端的类型为除了inline command之外的所有类型,并根据客户端命令或者交互模式的不同进行确定

以上是"Redis 协议的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

客户 数据 类型 客户端 内容 序列 数组 模式 首字 服务 长度 字符 字节 服务器 命令 转义 示例 分析 不同 普通 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 db2数据库自动挂 时代网络技术有限公司 软件开发的数据结构 投资银行软件开发岗工作强度 泉州售后管理软件开发 网络安全教育功能室 网络安全即安全数据安全 数据库技术大几学 赴日软件开发学历要求 兰州互动法治文化展馆软件开发 机架式服务器机箱标准 坐标岛国际服务器怎么下载 如何控制数据库安全性 宝山区咨询软件开发收费标准 武汉网络安全有名的培训学校 监控软件开发协议书 厦门网络安全执行标准 免费云服务器怎么远程挂载u盘 如何提升网络安全标准 打印机服务器脱机啥意思 公司服务器坏了要修多久 远程攻击网络安全 在深圳做软件开发赚钱吗 软件开发专业文科生可读吗 西宁股权投资管理软件开发公司 开展机房网络安全隐患排查 ifix数据库导入卡住不动 上海华为服务器续保费用 php数据库持久化 湖湘杯网络安全大赛初赛试题
0