首页 » 网站建设 » gophp通信技巧_经由进程 Go 来进修 Redis 通讯协议

gophp通信技巧_经由进程 Go 来进修 Redis 通讯协议

访客 2024-11-25 0

扫一扫用手机浏览

文章目录 [+]

Go、PHP、Java... 都有那么多包来支撑你利用 Redis,那你是否有想过

有了做事端,有了客户端,他们俩是若何通讯,又是基于什么通讯协议做出交互的呢?

gophp通信技巧_经由进程 Go 来进修 Redis 通讯协议

01先容

基于我们的目的,本文紧张讲解和实践 Redis 的通讯协议。

gophp通信技巧_经由进程 Go 来进修 Redis 通讯协议
(图片来自网络侵删)

Redis 的客户端和做事端是通过 TCP 连接来进行数据交互, 做事器默认的端口号为 6379

客户端和做事器发送的命令或数据一律以 \r\n (CRLF)结尾(这是一条约定)

02协议

在 Redis 等分为要乞降回答,而要求协议又分为新版和旧版,新版统一要求协议在 Redis 1.2 版本中引入,终极在 Redis 2.0 版本成为 Redis 做事器通信的标准办法

本文是基于新版协议来实现功能,不建议利用旧版(1.2 挺老旧了)。
如下是新协议的各种范例:

要求协议

1、 格式示例

<参数数量> CR LF$<参数 1 的字节数量> CR LF<参数 1 的数据> CR LF...$<参数 N 的字节数量> CR LF<参数 N 的数据> CR LF

在该协议下所有发送至 Redis 做事器的参数都是二进制安全(binary safe)的

2、打印示例

3$3SET$5mykey$7myvalue

3、实际协议值

\"大众3\r\n$3\r\nSET\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n\"大众

这便是 Redis 的要求协议规范,按照范例1编写客户端逻辑,终极发送的是范例3,相信你已经有大致的观点了,Redis 的协议非常的简洁易懂,这也是好上手的缘故原由之一,你可以想想协议这么定义的好处在哪?

回答

Redis 会根据你要求协议的不同(实行的命令结果也不同),返回多种不同类型的回答。
在这个回答“协议”中,可以通过检讨第一个字节,确定这个回答是什么类型,如下:

状态回答(status reply)的第一个字节是 \"大众+\公众缺点回答(error reply)的第一个字节是 \公众-\"大众整数回答(integer reply)的第一个字节是 \"大众:\"大众批量回答(bulk reply)的第一个字节是 \"大众$\"大众多条批量回答(multi bulk reply)的第一个字节是 \公众\"大众

有了回答的头部标识,结尾的 CRLF,你可以大致猜想出回答“协议”是怎么样的,但是实践才能得出真理,斎知道怕是你很快就忘却了

03实践

与 Redis 做事器交互

在这里我们完成了全体 Redis 客户端和做事端交互的流程,分别如下:

1、读取命令行参数:获取实行的 Redis 命令

2、获取要求协议参数

3、连接 Redis 做事器,获取连接句柄

4、将要求协议参数写入连接:发送要求的命令行参数

5、从连接中读取返回的数据:读取先前要求的回答数据

6、根据回答“协议”内容,处理回答的数据集

7、输出处理后的回答内容及原始回答内容

要求

通过对 Redis 的要求协议的剖析,可得出它的规律,先加上标志位,打算参数总数量,再循环合并各个参数的字节数量、值就可以了

回答

在这里我们对所有回答类型进行了分发,不同的回答标志位对应不同的处理办法,在这里需求把稳几项问题,如下:

1、当要求的值不存在,会将分外值 -1 用作回答

2、做事器发送的所有字符串都由 CRLF 结尾

3、多条批量回答是可基于批量回答的,要把稳理解

4、无内容的多条批量回答是存在的

最主要的是,对不同回答的规则的把控,能够让你更好的理解 Redis 的要求、回答的交互过程

04小结

写这篇文章的起因,是由于常常在利用 Redis 时,只是用,你不知道它是基于什么样的通讯协议来通讯,这样的觉得是十分难熬痛苦的

通过本文的讲解,我相信你已经大致理解 Redis 客户端是怎么样和做事端交互,也清楚了其所用的通讯事理,希望能够对你有所帮助!

末了,如果想详细查看代码,右拐项目地址:https://github.com/EDDYCJY/redis-protocol-example

如果对你有所帮助,欢迎点个 Star

参考

通信协议 http://doc.redisfans.com/topic/protocol.html

本文作者:煎鱼,原创投稿

标签:

相关文章

语言步骤,沟通的艺术与科学

在人际交往中,语言是传递信息、表达情感、建立关系的重要工具。并非所有的语言都能够达到预期的沟通效果。这就需要我们在沟通中运用语言策...

网站建设 2024-12-29 阅读0 评论0

语言方法心得,让文字更有力量的方法

语言是人类沟通的桥梁,是表达思想、传递情感的重要工具。在人际交往中,掌握一定的语言技巧,不仅能提升自己的表达能力,还能增强沟通效果...

网站建设 2024-12-29 阅读0 评论0

语言服务在全球化背景下的机遇与挑战

随着全球化的深入发展,语言服务已成为连接不同国家和文化的重要桥梁。在阿里巴巴集团的引领下,语言服务行业迎来了前所未有的机遇与挑战。...

网站建设 2024-12-29 阅读0 评论0

语言打包,高效沟通的方法之路

在信息爆炸的时代,沟通成为了人们日常生活和工作中不可或缺的一部分。而语言作为一种沟通工具,其重要性不言而喻。如何让语言更加高效、精...

网站建设 2024-12-29 阅读0 评论0

语言环境对儿童语言发展的影响及启示

在儿童成长的过程中,语言环境扮演着至关重要的角色。语言环境不仅影响着儿童的语言表达能力,还对其认知、思维、情感等方面产生深远影响。...

网站建设 2024-12-29 阅读0 评论0