-
译者注:刚毕业 1 年半的萌新,关注 Redis 和它的生态有一段时间,这是第一篇翻译作品所以很多地方不太完美,大家多多指点
Redis 6 RC1 发布
又一次,新的 Redis 版本进入发布候选状态,不出数月它就会在各大应用市场上架。我认为这是 Redis 至今最“企业级”的一个版本,不过有意思的是,我也花了不少时间去理解“企业级”意味着什么。我其实不怎么喜欢这个词,但是它确实有一些意义。Redis 如今很多地方都有用上,而且它还非常容易上手使用( scale down ):下载、花 30 秒编译、免配置直接运行。但是应用广泛也意味着加密和权限控制这些特性是必须要有的,所以 Redis 不可避免的需要作出妥协,不止我一个这样觉得,尽管我还是非常坚持将它设计得很简朴。
不过有意思的是,就算是新加功能我也可以按自己特立独行的方式来做。Redis ACLs 的实现就不像你在其他系统所见的一样,支持 SSL 这个特性也是写了好几个迭代最终选取了让核心实现尽可能简洁的方案。我对现在这个结果非常满意。
Redis 6 不仅新增了 ACLs 和 SSL 支持,据我所知这是 Redis 出生以来最大的一次更新,也是最多人参与到其中的一个版本,所以首先需要列出感谢名单。哪些开发者一起打造了 Redis 6 ?下面是他们的名字,按照 commit 数排序(按 commit 来度量很蠢,但是这是最便于我生成一份名单的方式),至少要有两次非 merge 的 commits。还要说明的是,我一直在到处改各种 bug,这导致我的 commits 数看起来虚高。
685 antirez
81 zhaozhao.zz
76 Oran Agra
51 artix
28 Madelyn Olson
27 Yossi Gottlieb
15 David Carlier
14 Guy Benoish
14 Guy Korland
13 Itamar Haber
9 Angus Pearson
8 WuYunlong
8 yongman
7 vattezhang
7 Chris Lamb
5 Dvir Volk
5 [email protected]
5 chendianqiang
5 John Sully
4 dejun.xdj
4 Daniel Dai
4 Johannes Truschnigg
4 swilly22
3 Bruce Merry
3 filipecosta90
3 youjiali1995
2 James Rouzier
2 Andrey Bugaevskiy
2 Brad Solomon
2 Hamid Alaei
2 Michael Chaten
2 Steve Webster
2 Wander Hillen
2 Weiliang Li
2 Yuan Zhou
2 charsyam
2 hujie
2 jem
2 shenlongxing
2 valentino
2 zhudacai 00228490
2 喜欢兰花山丘
感谢上面所有的贡献者,这是一次极好的团队合作。
接下来是 Change Log 中的新功能:
- 众多新模块( modules ) API
- 更好的过期循环( expire cycle )
- SSL
- ACLs 权限控制
- RESP3 协议
- 客户端缓存( Client side caching )
- 多线程 IO ( Threaded I/O )
- 无盘复制副本( Diskless replication on replicas )
- Redis-benchmark 的集群支持和 Redis-cli 优化
- 重写 Systemd 支持( Systemd support rewrite )
- Redis 集群代理与 Redis 6 一同发布(但在不同的 repo )
- Disque 模块与 Redis 6 一同发布
如你所见新功能不少,我打算花点篇幅讲一下其中的几个。
RESP3
Redis 诞生有 10 年了,我觉得我们需要一个新的协议。我在一篇博客 里详细地聊了这观点(译注:博客里观点是 RESP3 在 Redis 6 中是刚需),但是很快又改变了主意,所以 RESP3 协议在 Redis 6 里面是让用户决定的(“opt in”)。Redis 连接用 RESP2 建立,如果用户用HELLO命令握手,就可以进入 RESP3 协议的模式。
为什么需要新协议?因为旧协议不满足语义上的需求了。尽管有一些 RESP3 专属的新功能,但是最主要的原因是我们需要允许 Redis 返回复杂的数据类型,而且不用客户端“必须”得知道如扁平数组要转成什么类型、数字怎么正确和布尔值对应等才能处理。
那么,RESP3 不是新版 Redis 唯一支持的协议(我一直在推动这个事但是看起来好像进度会比预想慢),但这也许不是个坏事,毕竟这样大家有时间去适应。
