美文网首页
Redis 协议(上)协议介绍

Redis 协议(上)协议介绍

作者: redexpress | 来源:发表于2021-07-31 11:58 被阅读0次

    Redis 协议的特点

    Redis 协议在一下三个目标之间进行折中:

    • 易于实现
    • 可以高效地被计算机分析
    • 可以很容易地被人类读懂

    Redis 协议相当简单,当阅读Redis协议后,我有自己实现Redis协议的想法。本文主要介绍Redis协议,下篇会用Rust语言实现Redis。

    Redis 的数据类型

    本文使用\r\n表示回车字符(ASCII码13)和换行字符(ASCII码10)。字符不用引号,使用Markdown的方框框住。

    1. Null

    空数据,发送内容$-1\r\n。比如客户端发送GET key_not_exists,服务端返回(nil),发送的内容是$-1\r\n

    2. 空数组

    空数组,发送内容*-1\r\n

    3. 简单字符串

    简单字符串,发送内容以+开头。比如回复OK,发送的内容是+OK\r\n。简单的字符串适合返回可打印字符。

    4. 错误字符串

    错误字符串,发送内容以-开头。比如某个回复发送的内容是-Expected 2 arguments for SET command\r\n

    5. 整数

    整数,发送内容以:开头。用来发送一个整数,比如:21\r\n,或者布尔类型,:0\r\n表示假,:1\r\n表示真。

    6. 批量字符串

    整数,发送内容以$开头。批量字符串返回二进制安全的字符串。比如客户端发GET name,服务端返回yang。服务端传送的内容是$4\r\nyang\r\n。其中,第一个是$,接下来是实际回复长度的数字值4,之后跟\r\n,再后面跟实际回复数据,最后是\r\n

    7. 批量数组

    非空数组,发送内容以*开头。比如客户端发送GET name,内容是*2\r\n$3\r\nget\r\n$4\r\nname\r\n。表示批量数组长度是2,后面有两条数据。本例批量数组包含两个批量字符串。

    相关文章

      网友评论

          本文标题:Redis 协议(上)协议介绍

          本文链接:https://www.haomeiwen.com/subject/kdnhvltx.html