我目前正在考虑使用Redis,并正在为其创建客户端库。
我正在做一些实验,通过在端口6379上与redis服务器建立telnet连接来了解其工作原理。
当我使用SET mykey myvalue
设置密钥时,它将返回+ OK。 +代表什么意思吗,因为它似乎没有记录在任何地方。
当我尝试使用GET mykey
获取密钥时,我得到以下信息
$7
myvalue
根据我在文档中看到的内容,仅支持返回值,所以为什么我要返还7美元。它是否有任何特殊含义,或者我可以只废弃它并查看下一行。
答案 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"