众所周知,redis使用的是resp协议,那么客户端发送给redis-server
的数据又是什么样子的呢,以SET C c
命令为例:
# SET C c命令
# resp格式
*3\r\n$3\r\nSET\r\n$1\r\nC\r\n$1\r\nc\r\n
# resp格式排版一下:
*3\r\n
$3\r\nSET\r\n
$1\r\nC\r\n
$1\r\nc
\r\n
从上可知:
- redis-cli发送的是一个二进制安全的数组
另外,resp例子如下:
# 简单字符串
+OK\r\n
# 错误响应,错误信息不能包括\r\n
-ERR unknow command `foo`\r\n
# 整形
:5\r\n
# 安全二进制安全的字符串(bulk strings)
$6\r\nfoobar\r\n
# 空字符串,java中的""
$0\r\n\r\n
# 不存在的值,NULL
$-1\r\n
# 空数组
*0\r\n
# 两个bulk Strings元素 (换行是增强可读性)
*2\r\n
$3\r\nfoo\r\n
$3\r\nbar
\r\n
# 类型不同的数组(换行是增强可读性)
*2\r\n
:1\r\n
+hello
\r\n