12月20号,Redis发布了Redis6-rc1版本,作者antirez也在自己的博客中宣布了这一消息,并对Redis6版本做了一些介绍,以下是译文。

没错,新版本的Redis已经到了候选发布状态(RC版),几个月后,你就可以在各大应用市场看到新版本的Redis了。我想这大概是迄今为止,Redis最接近“企业级”应用的一个版本了,有趣的是,在这之前我花了很长时间来理解什么是企业级应用。我认为我并不喜欢这个词,但是它还是有一些意义的。现在Redis可以说是无处不在,并且仍然能够“缩小规模”:你可以直接下载它,在30秒内完成编译,然后在不需要进行任何配置的情况下启动它。但是无处不在意味着加密和ACL之类的环境也是必须要支持的,因此Redis必须要感谢我,尽管我极力追求简单性。

有趣的是,Redis ACL虽然是以一种武断的方式进行添加,但它几乎与你在其他系统中看到的都不一样,对SSL的支持也是经过了数次迭代,以达到最终使用最有意义的想法的目的。从让核心功能尽可能简洁的角度来看,我对这些改动还是很满意的。

Redis6为我们带来的不仅仅是ACLs和SSL,据我所知,这是Redis发行的功能最多,也是参与人数最多的一个版本了。都有谁为Redis6做出了贡献呢?我生成了一个贡献者列表(我知道这个列表很烂,我只是简单生成了一下),他们至少有两个commit,并且不包括合并提交。另外,由于我不断在这里或那里修复许多小东西,因此我的提交次数可能会远超他人。

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  meir@redislabs.com
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  喜欢兰花山丘

感谢上面各位的贡献,这是一次很棒的团队合作。

下面的列表是新功能列表:

  • 很多新的模块API
  • 更好的过期周期
  • SSL
  • ACLs
  • RESP3
  • 客户端缓存
  • 线程I/O
  • 副本上的无盘复制
  • Redis-benchmark支持集群+Redis-cli的改进
  • 系统支持重写
  • Redis Cluster代理与Redis6一起发布(不同仓库)
  • Redis 6发布了Disque模块(不同仓库)

如你所见,有很多比较大的改动,接下来我会选择其中几个进行介绍。

RESP3

10年之后,我们需要一个新的协议,我在这篇博客中进行了广泛的讨论:http://antirez.com/news/125,但我随后改变了主意,所以RESP3在Redis6中是“选择加入”。连接最开始是RESP2模式,只有当你使用新的HELLO命令握手时,你才会进入新的协议模式。

我们为什么需要一个新的协议呢?因为旧的语义不够清晰。RESP3中还有一些其他功能,但主要思想是能够直接从Redis返回复杂数据类型,而客户端不必知道要转换为哪种类型的数组,或者返回的数字是否能够转换成布尔值等等。

由于RESP3不是仅有的协议,所以它的使用速度比预期要慢一些,但这也许不是一件坏事,因为这样我们就有足够的时间来进行适应和调整。

ACLs

对Redis ACLs最好对介绍就是ACL文档本身(https://redis.io/topics/acl),即使它可能需要进行一些更新以匹配最近对修改。我在这里更想讨论一下使用它的动机。Redis需要ACLs是因为人们需要在更广泛的使用ACLs,以达到更好的控制客户端可以做的某些操作。另一个增加ACLs的主要原因是进行隔离,以保护数据免受应用程序错误的侵害。如果你的工作节点只能做BRPOPLPUSH操作,那么新的开发人员使用FLUSHALL的机会就比较少,也能够降低生产环境执行FLUSHALL的可能性。

在Redis中ACLs的操作都是免费的,因为如果你不用它们,性能上就不会受影响,毕竟这部分开销无法衡量。我想这是最好的处理方法了,值得一提的是,我们现在为ACL提供了Redis模块接口,因此你可以编写自定义身份验证方法。

SSL

现在是2019年,马上要到2020年了,因此有一些新的规则。唯一的问题就是如何正确执行,正确执行的前提是错误执行并理解其局限性,然后对Redis连接进行抽象以正确执行。这项工作是在完全没有我的帮助下进行的,这也体现了Redis开发过程的改变。

客户端缓存

关于客户端缓存,我写了一篇博客(http://antirez.com/news/130),然而我认为这是Redis6最不成熟的功能。没错,服务器可以协助你在客户端缓存,这看起来很酷,但我想要在Redis6 GA版本出来之前对这个功能进行进一步优化。尤其是增加一种新的模式,在这个模式下,服务器不维护客户端的状态或者尽量少的维护客户端的状态,更多使用消息进行交互。而且,现在无法将某些“cache slots”的过期消息合并成一个。这是一个不错的想法,我们将在一月份着重做这部分功能。

Disque成为一个模块

最终,我做到了(https://github.com/antirez/disque-module),我对这个结果非常满意。

Disque作为一个模块确实显示的Redis模块系统的强大。集群消息总线API,能够阻止和恢复客户端,计时器,模块私有数据的AOF和RDB控制。如果你还不知道什么是Disque,可以去看一下这个仓库的README。

集群代理

我的同事Fabio在这个工作中花费了几个月的时间:https://github.com/artix75/redis-cluster-proxy

我想看到这个功能已经很多年了,当主题是Redis集群支持时,客户端的需要进行的操作总是很分散,现在我们有了代理(还在进行中),就可以做很多有趣的事情了。最主要的功能是为客户端抽象Redis集群,就像它们正在与单个实例通信一样。另一个功能就是至少在简单且客户端仅使用简单命令和功能时执行多路复用。当要阻止或执行事务时,代理为客户端分配一组不同的连接。代理也是完全线程级的,所以让大部分CPU时间花在I/O上,这是一种最大化CPU使用率的好方法。你可以查看README文件,然后试一试这个功能。

Modules

Redis6的模块API完全是一个新的等级了。这是Redis发展最快的部分之一,因为我们从最开始就使用模块系统来开发非常复杂的东西,而不仅仅是琐碎的示例。前端时间,我启动了Disque端口,这也促使我为模块系统带来新功能。现在,你可以把Redis看成一个框架,可以讲系统作为模块进行编写,避免从头造轮子,同时也可以获得BSD许可,Redis实际上是一个可以用来编写系统的开放平台。

内部

Redis内部有非常多的优化:复制命令的方式发生了很大变化,过期使用了另一种算法,该算法更快且缓存更明显。

Status和ETA

现在我们已经有了RC1,我希望在3月末,最晚5月,你就可以看到GA版本准备就绪。

现在,Redis6绝对是可测试的,并且遇到错误的机会很小。但它包含了大量的代码更改,并且新功能由新的代码组成,也从没有人在生产环境中运行过这些代码。所以如果你找到了bug,请以最好的方式描述一下发生的情况并报告给我们。

感谢所有人为该版本做出贡献的人和在接下来几个月中帮助我们维护它处于稳定状态的人。

啊,我差点忘了,这是第6版的LOLWUT命令交互图:

每次运行都会随机生成不同的景观。

博客原文地址

http://antirez.com/news/131

译者注

正如作者所说,Redis6带来了很多新的功能。刚发布的版本肯定不能拿到线上去玩,但是自己折腾一下,提前感受一下也不错。特别是RESP3和客户端缓存都是我比较期待的。另外还有新的过期算法,这个之前没怎么听说,也值得研究一下。不说了,我先下为敬。

antirez:Redis6真的来了相关推荐

  1. 多线程处理list_跟大佬聊天,被反问Redis6的多线程真的能提高性能吗?

    转自:http://xiaorui.cc/archives/6918 前言 redis6 出来有段时间了,这个版本有不少的亮点,比如 client cache.acl.resp3.io 多线程等.对于 ...

  2. 【译】antirez:Redis6将支持客户端缓存

    本文翻译自Redis作者antirez的一篇博客,原文地址是:http://antirez.com/news/130 纽约Redis日已经结束了,我仍然与意大利时区同步,早上5点30起床,并立即走上了 ...

  3. Redis系列(十四)、Redis6新特性之RESP3与客户端缓存(Client side caching)

    Redis6引入新的RESP3协议,并以此为基础加入了客户端缓存的新特性,在此特性下,大大提高了应用程序的响应速度,并降低了数据库的压力,本篇就带大家来看一下Redis6的新特性:客户端缓存. 目录 ...

  4. Redis作者antirez:开源维护者的挣扎

    这两天,一篇名为<开源维护者的挣扎>的文章被迅速顶至 Hacker News 首页,这是 Redis 作者 antirez 发布的最新博客. 几个月前,一名开源项目的维护者向 antire ...

  5. DBA:介里有你没有用过的“CHUAN”新社区版本Redis6.0

    摘要:华为云DCS Redis 6.0社区版带来了极致性能.功能全面.可靠性强.性价比高的云服务,并且完全兼容开源Redis,客户端无需修改代码,开通后即可使用,使企业完全无需后顾之忧就能享受到业务响 ...

  6. 基于Redis的分布式锁真的安全吗?

    说明: 我前段时间写了一篇用consul实现分布式锁,感觉理解的也不是很好,直到我看到了这2篇写分布式锁的讨论,真的是很佩服作者严谨的态度, 把这种分布式锁研究的这么透彻,作者这种技术态度真的值得我好 ...

  7. Redis6简单安装

    安装redis6 依赖安装 yum -y install centos-release-scl scl-utils-build yum -y install -y devtoolset-8-toolc ...

  8. Redis之父Antirez谈副业与主业

    http://redis.io/ Redis 之父 Salvatore Sanfilippo,一名意大利程序员,大家更习惯称呼他 Antirez. 以下内容为 Antirez 在 Redis 诞生六周 ...

  9. 【Redis-6.0.8】CRC16

    0.阅读 阅读引用1 [Android路上的人]的关于CRC16的说明 Redis-CRC16校验-原理概述 百度百科的CRC 1.初识crc16 CRC循环冗余校验CRC(Cyclic redund ...

最新文章

  1. 互联网大厂技术面试内幕@霞落满天
  2. GRDB使用SQLite的WAL模式
  3. 微信小程序中的渐变色
  4. python:字典的操作
  5. 【机器学习基础】半监督算法概览(Python)
  6. 设计模式(二) 模板方法
  7. 当你伤心时的飞鸽传书
  8. 单元测试JUnit 4 (一)——keeps the bar green to keeps the code clean
  9. C语言之字符串探究(二):字符串原生操作——strlen、strcat、strcpy、strcmp自实现
  10. 洛谷——P2433 【深基1-2】小学数学 N 合一
  11. textfield设置一键删除
  12. WebCollector
  13. 我的第一本社会心理学(part2)--社会心理学的理论与方法
  14. 【crossbeam系列】3 crossbeam-deque:work-stealing算法
  15. 1000句英语经典口语(10)
  16. 这样的钓鱼邮件,你会中招吗?
  17. 【电路】电容(二)——滤波电容
  18. CentOS之——Bringing up interface eth0: Determining if ip address 192.168.1.81 is already in use for de
  19. 日语自学学习网站汇总
  20. (转)80后生存法则

热门文章

  1. 你所选择的栏目与当前模型不相符请选择白色的选
  2. Abaqus子程序Vumat报错Bad material definition
  3. 不同文件(扩展名)的打开方式
  4. Win10 Rational Rose 安装教程
  5. java设置jvm内存_JVM(java 虚拟机)内存设置
  6. Python—循环程序
  7. 前方是绝路,希望在转角!
  8. c++继承---私有继承
  9. 苹果手机上钉钉云盘在哪里?
  10. mysql 数据库中 int(3) 和 int(11) 什么区别?