Redis获取关键值时会响应各种$值

时间:2018-10-01 20:06:08

标签: redis

我目前正在考虑使用Redis,并正在为其创建客户端库。

我正在做一些实验,通过在端口6379上与redis服务器建立telnet连接来了解其工作原理。

当我使用SET mykey myvalue设置密钥时,它将返回+ OK。 +代表什么意思吗,因为它似乎没有记录在任何地方。

当我尝试使用GET mykey获取密钥时,我得到以下信息

$7
myvalue

根据我在文档中看到的内容,仅支持返回值,所以为什么我要返还7美元。它是否有任何特殊含义,或者我可以只废弃它并查看下一行。

1 个答案:

答案 0 :(得分:1)

Redis Protocol specification中有详细记录。我建议您在尝试编写自己的客户端和/或现有Redis clients

之一之前,先通读它。

+表示一个简单的字符串-ref:https://redis.io/topics/protocol#resp-simple-strings

  

简单字符串的编码方式如下:加号,后跟一个不能包含CR或LF字符的字符串(不允许换行),以CRLF终止(即“ \ r \ n”)。 / p>      

简单字符串用于以最小的开销传输非二进制安全字符串。例如,许多Redis命令在成功后仅回答“ OK”,这是作为RESP简单字符串编码的以下5个字节:

"+OK\r\n"

$表示批量字符串-ref:https://redis.io/topics/protocol#resp-bulk-strings

  

使用大字符串来表示单个二进制安全字符串,最大长度为512 MB。

     

批量字符串的编码方式如下:

     
      
  • “ $”字节,后跟组成字符串的字节数(带前缀的长度),由CRLF终止。
  •   
  • 实际的字符串数据。
  •   
  • 最终CRLF。
  •   
     

因此,字符串“ foobar”的编码如下:

"$6\r\nfoobar\r\n"