redis 接收命令协议格式详解


一、redis命令格式详解

redis从socket端口接收到的信息,
以行为单位进行命令接收和解析 处理;
每行都有一个消息标头 (表示消息的用途);
每行命令都使用 \r\n 结束此行消息的输入。

redis接收和返回的消息常见消息头如下五种格式:
+: 此消息头表示当前消息是一个正确的状态,后面跟上相应的字符信息,常用于redis服务器返回消息
-: 此消息头表示返回一个错误信息,后面跟上相应的错误信息,常用于redis服务器返回消息
*: 表示一个整体的消息集合拥有多少行消息,不包含此消息行,常用于发送命令至redis服务器
&: 表示下一行消息的数据长度,提出消息头和行结束标志,常用于发送命令至redis服务器
:: 表示返回一个数值,常用于redis服务器返回消息
以上是redis的消息头,加上相关命令和数据 和 \r\n 结尾就可以组成一个redis可以接收的消息包。


二、redis命令格式举例使用

2.1 举例发送一个 set keyId keyValue 命令,设置一个键”keyId” 的键值为 keyValue,
我们通过以上的消息头可以将其转换为以下的消息块

  *3 \r\n \\表示消息块 一共有三行
  $3\r\n   \\表示以下消息由三个字符组成
  set \r\n  \\消息一
  $5\r\n    \\表示以下消息由五个字符组成
  keyId\r\n  \\消息二 
  $8\r\n     \\表示以下消息由八个字符组成
  keyValue\r\n \\消息三


返回消息: 如果成功,返回以下消息 +Ok\r\n 如果失败,返回一下消息 -err:错误内容\r\n

2.2 例 执行一个 hmset操作一个 hash键
hmset hashKeyId k1 v1 k2 v2 k3 v3

  //此命令包含8个消息行 每一个消息中的字符分别为  5 9 2 2 2 2 2 2
  转换为redis可接收的消息应该为以下格式:
  *8\r\n
  $5\r\n
  hmset\r\n
  &9\r\n
  hashKeyId\r\n
  &2\r\n
  k1\r\n
  &2\r\n
  v1\r\n
  &2\r\n
  k2\r\n
  &2\r\n
  v2\r\n
  &2\r\n
  k3\r\n
  &2\r\n
  v3\r\n

  

返回消息: 如果成功,返回以下消息 +Ok\r\n 如果失败,返回一下消息 -err:错误内容\r\n

依次类型,我们可以将通过redis-cli发送的命令,都转换为此文本,然后发送至redis运行,得到相应的返回结果。

相关阅读:
window redis 文件夹文件说明 (二) —[ redis-cli]
window redis 文件夹文件说明 (一 )
Redis 数据类型简介
windows下 Redis配置
c# redis应用实例
redis相关简介
KV数据库简介