阅读Jedis最早的代码

Jedis 最新版的代码太多了,阅读起来很吃力,从早期版本开始阅读的话会简单很多

怎么找老版本的代码?

打开 Jedis 的 Github主页,可以看到 commit 的记录个数

点击 commit 进去,拉到最低部,点击 older 按钮

可以看到浏览器的地址栏目变化

后面的数字就是 offset,目前的提交记录个数是 1535,那就试试 offset 为 1500。在浏览器中输入 https://github.com/xetorthio/jedis/commits/master?after=bf212393a11e449c064947124e0f244ccfc38bff+1500

这样就翻到了最后一页

点击这个就可以进入当时的提交版本

再点击 Browse files 就可以查看当时所有的代码文件了

在旁边还可以看到所有的 tag

点击就可以查看打上 tag 的代码了

第一个版本的代码

现在来分析一下签名为 829e6d9862df0b17931afefb961021fd5ee89db8 的代码

我本地已经下载好了一份代码

通信协议

要研究 Jedis 就需要一份 Redis 的通信协议:

本地也下载好了一份 PDF 版的文件

请求协议

协议的一般形式:

1
2
3
4
5
6
*<参数数量> CR LF
$<参数 1 的字节数量> CR LF
<参数 1 的数据> CR LF
...
$<参数 N 的字节数量> CR LF
<参数 N 的数据> CR LF

比如发送一条这样的命令:SET a b,请求内容为

1
2
3
4
5
6
7
*3
$3
SET
$1
a
$1
b

响应协议

一共有 5 种:

  • status reply
  • error reply
  • integer reply
  • bulk reply
  • multi bulk reply

具体的格式看下图