首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redis 6.0新特性----RESP3协议

CR>LF> 或作为转义字符串: "+hello world\r\n" 简单字符串中不能包含或字符。...Double 一般形式是 ,\r\n,例如1.23编码为: ,1.23CR>LF> 或作为转义字符串: ",1.23\r\n" 首先。...数组的聚合类型char是 *,因此要表示一个包含三个数字1、2、3的数组,将发出以下协议: *3CR>LF> :1CR>LF> :2CR>LF> :3CR>LF> 或作为转义字符串: "...Map可以有任何其他类型作为字段和值,但是Redis将只使用可用可能性的子集。例如,Redis命令不太可能返回一个数组作为键,但是Lua脚本和模块可能会这样做。...当客户机读取回复并遇到属性类型时,它应该读取该属性,然后继续读取回复。属性回复应该单独累积,用户应该有办法访问这些属性。

1.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Redis网络通信协议说明

    以下是通用形式: * CR LF $ CR LF CR LF .....$N> CR LF CR LF 例子如下: *3 $3 SET $5 mykey $7 myvalue 上面的命令看上去像是单引号字符串...服务器发送的准确序列如下: "$6\r\nfoobar\r\n" 如果请求的值不存在,批量响应将使用特殊的值-1来作为数据长度,例如: C: GET nonexistingkey S: $-1 当请求的对象不存在时...例如: C: BLPOP key 1 S: *-1 当这种情况发生时,客户端库API将返回空nil对象,且不是一个空列表。这必须有别于空列表和错误条件(例如:BLPOP命令的超时条件)。...批量命令 一些命令当用内联命令发送时需要一种特殊的格式用于支持最后参数二进制安全。这种命令用最后参数作为“字节计数器”,然后发送批量数据(因为服务器知道读取多少个字节,所以是二进制安全的)。

    75410

    都2021了还不懂Redis的网络通信协议?

    $N> CR LF CR LF 示例: ➜ ~ nc localhost 6379 keys * *2 $18...服务器发送的准确序列如下: "$6\r\nfoobar\r\n" 如果请求的值不存在,批量响应将使用特殊的值-1来作为数据长度,例如: C: GET nonexistingkey S: $-1 当请求的对象不存在时...正如您可以看到的多批量回复是以完全相同的格式使用Redis统一协议将命令发送给服务器。...例如: C: BLPOP key 1 S: *-1 当这种情况发生时,客户端库API将返回空nil对象,且不是一个空列表。这必须有别于空列表和错误条件(例如:BLPOP命令的超时条件)。...批量命令 一些命令当用内联命令发送时需要一种特殊的格式用于支持最后参数二进制安全。这种命令用最后参数作为“字节计数器”,然后发送批量数据(因为服务器知道读取多少个字节,所以是二进制安全的)。

    37220

    Redis协议规范(译文)

    例如,许多Redis命令成功回复时只有“OK”,因为RESP 单行字符串使用以下5个字节进行编码: "+OK\r\n" 为了发送二进制安全字符串,使用RESP 多行字符串代替。...所以字符串“foobar”的编码如下: "$6\r\nfoobar\r\n" 当只是一个空字符串时: "$0\r\n\r\n" RESP 多行字符串也可用于使用用于表示Null值的特殊格式来表示值的不存在...例如,当BLPOP命令超时时,它返回一个计数为-1的Null数组,如下例所示: "*-1\r\n" 当Redis使用Null数组回复时,客户端库API应返回空对象而不是空数组。...C: *2\r\n C: $4\r\n C: LLEN\r\n C: $6\r\n C: mylist\r\n S: :48293\r\n 通常我们将协议的不同部分与换行符分开以简化,但实际的交互是客户端发送...可以使用对每个字符执行单个操作的代码处理批量和多个批量长度,同时扫描CR字符,如下面的C代码: #include int main(void) { unsigned char

    1.1K30

    SMTPPOP3IMAP 命令简介

    SMTP 是请求/响应协议,命令和响应都是基于 ASCII 文本,并以 CR 和 LF 符结束。响应包括一个表示返回状态的三位数字代码。SMTP 在 TCP 协议 25 端口监听连接请求。...它与 SMTP 服务的区别仅仅是,使用 SMTP 发信不需要验证用户帐户,而用 ESMTP 发信时,服务器会要求用户提供用户名和密码以便验证身份。验证之后的邮件发送过程与 SMTP 方式没有两样。...这个命令可以包含起始的路径位置和需要列出的文件夹所符合的特征,可以使用通配符"*"。...例如,可以利用FETCH命令提取邮件头、某一个附件、或某一邮件附件头部的某一字段,等等。...C: A341 CLOSE S: A341 OK CLOSE completed EXPUNGE EXPUNGE将邮箱中所有打了删除标记的邮件彻底删除。

    2.7K30

    Python自动化运维1

    ; same_files:匹配的文件; diff_files:不匹配的文件; funny_files:两边文件夹中都存在,但无法比较的文件; subdirs:将 common_dirs 目录名映射到新的...python对SMTP的支持: ①email模块:负责构建邮件 ②smtplib模块:负责发送邮件 smtplib模块定义了一个SMTP客户机会话对象,可以使用该对象向任何具有SMTP或ESMTP侦听器守护进程的...exception smtplib.SMTPServerDisconnected #当服务器意外断开连接时,或者在将SMTP实例连接到服务器之前尝试使用它时,会引发此异常。...exception smtplib.SMTPResponseException #包含SMTP错误代码的所有异常的基类当SMTP服务器返回错误代码时,会生成这些异常。...当这样使用之后退出时,SMTP QUIT命令将自动发出 (可以,判断连接是否正常) >>> with smtplib.SMTP("smtp.qq.com",25) as smtp: smtp.noop

    1.7K20

    Python自动化运维1

    ; same_files:匹配的文件; diff_files:不匹配的文件; funny_files:两边文件夹中都存在,但无法比较的文件; subdirs:将 common_dirs 目录名映射到新的...python对SMTP的支持: ①email模块:负责构建邮件 ②smtplib模块:负责发送邮件 smtplib模块定义了一个SMTP客户机会话对象,可以使用该对象向任何具有SMTP或ESMTP侦听器守护进程的...exception smtplib.SMTPServerDisconnected #当服务器意外断开连接时,或者在将SMTP实例连接到服务器之前尝试使用它时,会引发此异常。...exception smtplib.SMTPResponseException #包含SMTP错误代码的所有异常的基类当SMTP服务器返回错误代码时,会生成这些异常。...当这样使用之后退出时,SMTP QUIT命令将自动发出 (可以,判断连接是否正常) >>> with smtplib.SMTP("smtp.qq.com",25) as smtp: smtp.noop

    2.6K10

    Redis 通信协议

    RESP 的规定一条命令的格式如下: * CR LF $ CR LF CR LF ......$N 的字节数量> CR LF N 的数据> CR LF 命令本身也作为协议的其中一个参数来发送。...当请求对象不存在时,客户端应该返回空对象,而不是空字符串: 比如 Ruby 库应该返回 nil , 而 C 库应该返回 NULL (或者在回复对象中设置一个特殊标志), 诸如此类。...正如你所见到的那样, 多条批量回复所使用的格式, 和客户端发送命令时使用的统一请求协议的格式一模一样。 它们之间的唯一区别是: 统一请求协议只发送批量回复。...因为 Redis 协议将数据的长度放在数据正文之前, 所以程序无须像 JSON 那样, 为了寻找某个特殊字符而扫描整个 payload , 也无须对发送至服务器的 payload 进行转义(quote)

    77010

    很少人真正了解 n 和 r 有什么区别!

    我们使用printf打印时基本都会用到 \n 和 \r 之类控制字符,比如: printf("hello world!\r\n"); 那你知道这些 \n 和 \r 的区别吗?...\n : 换行符(newline),另起一行,对应ASCII值10(缩写:LF)。 \r : 回车符(return),回到一行的开头,对应ASCII值13(缩写:CR)。...在微软的MS-DOS和Windows中,使用“回车CR('\r')”和“换行LF('\n')”两个字符作为换行符; Windows系统里面,每行结尾是 回车+换行(CR+LF),即“\r\n”; Unix...在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换. 经过这种传输的文件字节数可能会发生变化。...如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本。一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件。

    16.6K22

    一文让你搞明白文本或代码中 n 和 r 的区别

    我们使用printf打印时基本都会用到 \n 和 \r 之类控制字符,比如: printf("hello world!\r\n"); 那么,你知道 \n 和 \r 的区别吗?...\n : 换行符(newline),另起一行,对应ASCII值10(缩写:LF)。 \r : 回车符(return),回到一行的开头,对应ASCII值13(缩写:CR)。...在微软的MS-DOS和Windows中,使用“回车CR('\r')”和“换行LF('\n')”两个字符作为换行符; Windows系统里面,每行结尾是 回车+换行(CR+LF),即“\r\n”; Unix...在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换. 经过这种传输的文件字节数可能会发生变化。...如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本。一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件。 END

    8.1K30

    文本或代码中 n 和 r 的区别

    素材来源:网络 编辑整理:strongerHuang 我们使用 printf 打印时基本都会用到 \n 和 \r 之类控制字符,比如: printf("hello world!...在微软的 MS-DOS 和 Windows 中,使用“回车 CR('\r')”和“换行 LF('\n')”两个字符作为换行符; Windows 系统里面,每行结尾是 回车+换行(CR+LF),即“\r\...在不同平台间使用 FTP 软件传送文件时, 在 ascii 文本模式传输模式下, 一些 FTP 客户端程序会自动对换行格式进行转换. 经过这种传输的文件字节数可能会发生变化。...如果你不想 ftp 修改原文件, 可以使用 bin 模式(二进制模式)传输文本。...一个程序在 windows 上运行就生成 CR/LF 换行格式的文本文件,而在 Linux 上运行就生成 LF 格式换行的文本文件。

    4.6K20

    golang redis 客户端源码阅读(1)连接操作

    numScratch [40]byte } 以上就是连接操作的核心代码 因为redis是文本协议,因此发送时需要按照redis协议序列化,接收的时候按照redis协议反序列化。...简单字符串 Simple Strings, 以 "+"加号 开头 格式:+ 字符串 \r\n 字符串不能包含 CR或者 LF(不允许换行) eg:..."+OK\r\n" 注意:为了发送二进制安全的字符串,一般推荐使用后面的 Bulk Strings类型 2....错误 Errors, 以"-"减号 开头   格式:- 错误前缀 错误信息 \r\n 错误信息不能包含 CR或者 LF(不允许换行),Errors与Simple Strings...大字符串类型 Bulk Strings, 以 "$"美元符号开头,长度限制512M   格式:$ 字符串的长度 \r\n 字符串 \r\n 字符串不能包含 CR或者 LF(

    51020

    Redis 用的很溜,了解过它用的什么协议吗?

    RDB 方式 RDB持久化是通过快照的方式,在指定的时间间隔内将内存中的数据集快照写入磁盘。它以一种紧凑压缩的二进制文件的形式出现。...1、所有的写入命令会追加到aof_buf(缓冲区)中; 2、AOF缓冲区根据对应的策略向硬盘做同步操作; 3、随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩的目的; 4、当Redis服务器重启时...协议规则 请求命令 一条客户端发往服务器的命令的规则如下: * CR LF $ CR LF CR LF ......$N 的字节数量> CR LF N 的数据> CR LF RESP 用\r\n作为分隔符,会表明此条命令的具体参数个数,在命令上看来,空格分隔的都表示一个参数,例如 set str:hello...n$6\r\nnews-2\r\n$6\r\nnews-1\r\n 多条批量回复和前面说的客户端发送命令的格式是一致的。

    46510

    zip命令打包文件

    婚假回来了,第一件事先打个测试机代码的压缩包,可能别的同事有ftp提交过代码 打压缩包 zip -q -r test.zip /home/test -q是不显示指令详情 -r是递归所有文件文件夹 在压缩包里删除指定的文件...-F 尝试修复已损坏的压缩文件。 -g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。 -h 在线帮助。 -i 只压缩符合条件的文件。...-j 只保存文件名称及其内容,而不存放任何目录名称。 -J 删除压缩文件前面不必要的数据。 -k 使用MS-DOS兼容格式的文件名称。 -l 压缩文件时,把LF字符置换成LF+CR字符。...-ll 压缩文件时,把LF+CR字符置换成LF字符。 -L 显示版权信息。 -m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。...-n 不压缩具有特定字尾字符串的文件。 -o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。 -q 不显示指令执行过程。

    1.6K30

    ASCII

    http://c.biancheng.net/c/ascii/ 转自C语言中文网 ASCII(American Standard Code for Information Interchange,美国信息互换标准代码...后来呢,NUL 被用于C语言中,表示字符串的结束,当一个字符串中间出现 NUL 时,就意味着这个是一个字符串的结尾了。...而C语言和 Unix 操作系统将 LF 的含义重新定义为“新行”,即 LF 和 CR 的组合效果,也就是回车且换行的意思。...当输入 CR 时,系统也常常隐式地将其转换为LF。 SO (14) 和 SI (15) SO,Shift Out,不用切换;SI,Shift In,启用切换。...而 127 这个值所对应的二进制值为111 1111(所有 7 个比特位都是1),将 DEL 用在现存的纸带上时,所有的洞就都被穿孔了,就把已经存在的数据都擦除掉了,就起到了删除的作用。

    1.5K50
    领券