dot Redis 8 来了——而且是开源的

了解更多

向 Redis 的新老朋友问好

惯用的 Python、Java 和 Node 客户端
加入 Redis 组织

第一次使用 Redis 的用户可能会注意到,有一个令人惊叹的事情是 42 页长的客户端列表,所有这些客户端都由 Redis 强大的开源社区开发。 目前,它由 218 个不同的客户端组成!

该列表不仅涵盖了所有主要的编程语言,还涵盖了一些我至少在开始撰写此博客之前从未听说过的语言,例如 RacketRebolLasso。 严格来说,该列表涵盖了 36 种不同的编程语言!(我想你已经明白了。也许我可以从现在开始去掉“!”了……)

乍一看,编写 Redis 客户端听起来很简单。 您所要做的就是阅读 Redis 协议 (RESP),它非常简单且基于文本,然后只需按照 Redis 命令 文档并逐个实现这些命令。 准确地说,该列表包含 264 个不同的命令!(对不起,我忍不住——不得不再加上一个“!”)

但我为什么要告诉你这一切呢?

好吧,这 264 个命令只是冰山一角。 如果您真的想充分利用 Redis 的强大功能,仅涵盖这些命令无法体现 Redis 的优势。 除了这些“简单”的命令之外,Redis 还支持当今任何 NoSQL 数据库都应具备的功能:高可用性分片事务访问控制列表 (ACL)通知可扩展性

为了保持 Redis 的简单性和稳定性,大量处理被卸载到客户端。 例如,为了支持 Redis 事务,客户端必须承诺所有操作都在同一个套接字上完成,并且只要事务未“执行”,就无法复用此套接字。 当人们开始开发新的 Redis 客户端时,应该考虑到这些细微差别,而当涉及到支持高可用性和 集群 时,它会变得更加棘手。

我们希望让它变得更好!

大约两年前,在 Redis 代码转移到 Redis 组织 的几个月前,我们开始思考:我们如何确保 Redis 用户不仅获得最好的 Redis 服务器,而且在使用 Redis 提供的所有最新、最强大的功能时,也能获得最好的开发体验?

我们开始接触 Redis 广大社区使用的不同客户端,并将目标设定为帮助客户端维护人员跟上 Redis 庞大的功能集。 首先,我们与许多维护人员组成了一个论坛,为他们提供一个分享经验和困境的平台,同时也让 Redis 核心团队获得直接反馈。

然后,我们绘制了 10 种主要编程语言中更多采用的客户端中的差距和缺失的功能。 我们意识到,虽然某些客户端每周有数百万次的下载量,但它们仍然缺少有价值的功能(如 Redis 集群或 Pipeline),许多用户无法使用,因此我们立即开始向这些客户端贡献代码。

最后,在采访了许多 Redis 用户之后,我们意识到用户可以选择的客户端种类繁多,这表明引导 Redis 客户端非常简单,但维护一个最新的客户端是一项全职工作,而且用户很难决定选择哪个客户端,以及长期运行可以依赖哪个客户端。

新的 Redis 组织成员

去年,我们开始建议一些更常用的客户端加入 Redis 组织,因此我们很高兴欢迎三位新成员 Jedisnode-redisredis-py。 这三个客户端加入了老牌成员 Hiredisredis-rb。 我们希望这将减少用户之间的困惑,增加他们对客户端路线图的信心,并帮助我们确保这些客户端提供完整的 Redis 体验。

过去几个月非常忙碌,这三个客户端都进行了彻底的改版。 添加了大量缺失的功能,以确保客户端支持 Redis 提供的所有优点,同时还进行了重构,以提供更“现代”的体验(这些客户端已经有 10 多年的历史)。 辛勤工作的结果是它们各自都有了新的第 4 个版本。 我们非常欢迎您下载新的客户端候选版本 Jedis@v4node-redis @v4redis-py@v4。 请分享您的反馈。

下一步是什么?

这项工作才刚刚开始,路线图包含一些有趣的功能,因此预计在不久的将来会有更多功能推出。 其中一些功能是为最常用的 Redis 模块(如 RediSearchRedisJSON)添加本机支持,这应该可以简化开发人员的体验。 此外,一些完成了其他期待已久的功能,例如 客户端缓存 支持、Redis 6 中添加的新 Redis 协议 (RESP3)、新的 Stream API 以及 Redis 7 中即将推出的 Redis 函数。