众所周知,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



更多推荐