redis为什么可以解决并发(redis使用什么通信协议)

技术Redis中通信协议RESP是怎么实现的这篇文章主要介绍了Redis中通信协议RESP是怎么实现的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。RES

本文主要介绍Redis中的通信协议RESP是如何实现的,具有一定的参考价值。有兴趣的朋友可以参考一下。希望大家看完这篇文章后收获多多。让边肖带你去了解它。

RESP

resp (Redis序列化协议)是Redis序列化协议的简称,是一种实现过程简单、解析性能好的纯文本协议。

5种单元类型

Redis协议将传输的数据结构分成五种最小的单元类型,单元以回车符结束\ r \ n。

1. 单行字符串以 + 符号开头

示例:你好,世界\ r \ n2. 多行字符串以 $ 符号开头,后跟字符串长度

示例:$ 11 \ r \多行字符串也可以用来表示单行字符串。

3. 整数值以 : 符号开头,后跟整数的字符串形式

示例:1024 \ r \ n4. 错误信息以 - 符号开头

错误的参数类型

示例:-对akeyholdinghewrongkindofvalue再次执行错误类型操作\ r \ n5. 数组以 * 号开头,后跟数组的长度

示例:* 3 \ r \ n : l \ r \ n 33602 \ r \ n :3 \ r \ n n两种特殊类型

1. NULL

使用长度为-1的空多行字符串表示形式。

示例:$-1 \ r \ n2. 空字符串

空字符串用多行字符串表示,长度用0填充。

示例:$ 0 \ r \ n \ r \有两个空字符串,因为空字符串在它们之间。

客户端请求服务端

客户端发送给服务器的指令只有一种格式,即多行字符串数组。

例如,一个简单的指令集x x将被序列化为以下字符串

* 3 \ r \ n $ 3 \ r \ n set \ r \ n $ 1 \ r \ NX \ r \ n $ 1 \ r \ n控制台如下所示

*3

$3

设置

$1

x

$1

x

服务端响应客户端

服务器在响应客户端信息时,会用到各种各样的数据结构,比客户端发送到服务器时要复杂得多,但即使非常复杂,也是上面提到的五种基本类型的组合。

单行字符串响应

127.0.0.1:6379setxx

OK上面的OK是单行字符串响应(不带双引号),也就是OK。

错误响应

127.0.0.1:6379incrx

(error } errvalueisntentgeroutofrange自动递增一个字符串,服务器会抛出一个错误提示。

-ERR值不是整数或超出范围

整数响应

127.0.0.1:6379incrbooks

(integer)11是整数响应:1。

多行字符串响应

127.0.0.1:6379getx

' X '上括号中的X是多行字符串响应,即:

$1

十.数组响应

127 . 0 . 0 . 1:6379 hsetinfonamebibabo

(整数)1

127 . 0 . 0 . 13360 . 133333636318

(整数)1

西汀福赛雄

(整数)1

127 . 0 . 0 . 1:6379 hgmetallinfo

1)“名称”

2)'bibabo '

3)“年龄”

4)'18'

5)“性”

6)上面的hgetall命令返回一个数组。0、2和4的字符串是哈希表的键,1、3和6的字符串是值。客户端负责将数组组装成字典并返回。

*6

$4

名字

$6

bibabo

$3

年龄

$2

18

$3

$4

嵌套

127.0.0.1:6379scan0

1)'0'

2)1)“信息”

2)“书”

3)‘作者’扫描命令用于扫描服务器中包含的所有按键列表,通过光标一次获取一个部件。该命令返回嵌套数组。

数组的第一个值代表光标的值。如果该值为0,则意味着遍历已经完成。如果不是0,则使用该值作为下一次扫描的参数。

数组的第二个值是数组,它是键的列表。

*2

$1

0

*3

$4

信息

$5

$6

作者:感谢您仔细阅读本文。希望边肖分享的文章《如何在Redis中实现RESP通信协议》对大家有所帮助。同时也希望大家多多支持,关注行业信息渠道,多了解!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154053.html

(0)

相关推荐

  • 如何进行C++运行机制的介绍

    技术如何进行C++运行机制的介绍这期内容当中小编将会给大家带来有关如何进行C++运行机制的介绍,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C++编程语言是一款应用广泛,功能强大的编程

    攻略 2021年10月27日
  • jquery如何清除兄弟元素

    技术jquery如何清除兄弟元素这篇文章主要介绍“jquery如何清除兄弟元素”,在日常操作中,相信很多人在jquery如何清除兄弟元素问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jqu

    攻略 2021年11月19日
  • 如何使用variant代替union

    技术如何使用variant代替union如何使用variant代替union,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。union(联合体

    攻略 2021年11月10日
  • 谷歌地图怎么看街景,手机谷歌地图怎么看街景

    技术谷歌地图怎么看街景,手机谷歌地图怎么看街景1. 谷歌卫星图是可以看街景的,但国内貌似不容易上的谷歌地图怎么看街景。2. 国内用户可以直接用奥维互动地图app看街景,可以连接上,这个软件中也有集成了谷歌卫星图,还有其他

    生活 2021年10月19日
  • html进度条代码(html进度条显示百分比)

    技术html5进度条的标签是哪个本篇内容主要讲解“html5进度条的标签是哪个”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5进度条的标签是哪个”吧!

    攻略 2021年12月15日
  • 鞋子磨脚怎么办,鞋子磨脚咋办,舍不得扔

    技术鞋子磨脚怎么办,鞋子磨脚咋办,舍不得扔时下,是添置新衣新鞋最好的时候,但对于很多人来说,新鞋固然令人喜欢,但却也非常让人“肉疼”,动不动就磨脚的遭遇让许多人对穿新鞋还是有一定的顾忌鞋子磨脚怎么办。即使是价值几百、上千

    生活 2021年10月30日