Redis通信协议阅读

最近要搞搞redis的通信协议,先阅读一下官方文档,记录一下。

应答模型

通常redis收到请求之后会立刻响应,但是有两种情况属于例外:

  • 使用pipeling的时候

  • 使用pub/sub的时候

协议

每次请求的第一个字节代表着本次请求内容类型:

  • + 代表简单字符串,例如 OK, PING

  • - 代表出错,目前 -后字符一直到空格为止代表错误类型,但这并不是此协议的一部分,只是一种偏好。

  • : 代表Integers,例如 :1000\r\n

  • $ 代表Bulk Strings,例如 foobar 将会encode成 $6\r\nfoobar\r\n,而空字符串将会encode成 $0\r\n\r\n

    • NULL将会表示成 $-1\r\n
  • * 代表Array,第一个字符是 *,其后紧接array的数据成员个数,然后接一个 \r\n,接下来就是各成员具体表示。例如返回一个array,其成员为 foo, bar,将会被encode成:

*2\r\n$3\r\nfoo\r\n$3\r\nbar\r\n

- 空数组将会表示成 `*-1\r\n`

每次请求都需要以 \r\n 结尾。


更多文章
  • Golang的一些坑
  • GC 垃圾回收
  • 设计一个路由
  • Go语言性能优化实战
  • 那些年开发的时候踩过的坑
  • (关系型)数据库优化总结
  • 动态规划民科教程
  • Golang 分布式异步任务队列 Machinery 教程
  • 使用geohash完成地理距离计算
  • 2018年就要到了,这一年都做了什么呢?
  • 算法导论阅读笔记 --- 排序算法
  • 短链系统的实现
  • Git HTTPS 如何保存密码
  • 程序员修炼之道 阅读笔记
  • Python开发实践经验