Redis 社区的发展与国内开发者的贡献

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 阿里云从 Redis 4.0 开始深度参与到社区的开发中,也向社区贡献了大量代码,比如 PSYNC2、pipeline 的优化、数据一致性的增强以及其他实用功能,比如基于 LFU 的热点 KEY 查询功能等。


Redis 社区的发展与国内开发者的贡献



——赵钊

阿里云数据库产品事业部 高级技术专家


image.png

Redis 诞生于 2009 年,发展至今已经经历了 7 个大版本,每个大版本都有很多新的特性,比如 3.0 版本支持了集群模式;4.0 版本开发了 lazy-free、PSYNC2,解决了 KEY 删除以及复杂场景下的数据同步问题;5.0 版本新增了 Stream 数据结构,让 Redis 具备了功能比较完整的轻量级消息队列的能力; 6.0 版本发布了很多企业级特性,比如 Threader-IO 支持了多线程、 TLS 数据传输加密以及 ACL 权限控制等。

image.png

新特性不断提升了 Redis 的性能、安全性以及企业级能力,也需要大量代码开发。 Redis 的代码从一开始的 2w+ 行,到现在 7.0 版本 15w+ 行,如果只靠固定开发团队的开发,显然无法支撑如此巨大的工作量。成功的开源产品需要有强大的社区作为基础,这也是开源的精神。


阿里云从 Redis 4.0 开始深度参与到社区的开发中,也向社区贡献了大量代码,比如 PSYNC2、pipeline 的优化、数据一致性的增强以及其他实用功能,比如基于 LFU 的热点 KEY 查询功能等。本次的 7.0 版本又贡献了 Multi-part AOF 等比较核心的重量级特性。 


image.png

Redis 的原作者Salvatore Sanfilippo 6.0 之后宣布不再维护 Redis 而后社区成立了 core team 组织来继续社区的日常维护和开发工作。目前阿里云在 Redis 社区有一名 core team member (核心维护者),两名 contributor (核心贡献者),可以说是除原作者和Redis Labs 以外对社区贡献最大的组织,也见证了国内 Redis 用户的快速增长。


image.png

阿里云与 Redis 社区的深度合作也逐渐吸引了很多来自国内的开发者参与到 Redis 社区的建设中。尤其是在 Redis core team 成立之后,社区工作人员也从单线程变成多线程,对于日常 issue PR 的处理速度大幅提升,社区活跃度也显著提升。


本次 7.0 的发布,很多来自中国的开发者贡献了很多核心 feature 比如 global replication buffer 可以解决主备同步间备库消耗的内存问题,还有底层编码从 Ziplist listpack 转换,解决了 Ziplist 编码中 cascade update 的问题, multi-part AOF 结合 AOF annutation 即可实现数据按时间点恢复,解决数据丢失的问题。


我们会继续和 Redis 社区进行深度合作,推进 Redis 社区的发展, PSYNC3、cluster v2Thread command、Slot migration 等新 feature 也已提上日程。


Redis 已经不是简单的缓存,正在向真正的内存数据库发展。它也是目前国内用户使用量规模最大的 NoSQL 数据库之一并且一直处于高速发展的状态。越来越多的泛互联网行业甚至传统行业都在逐渐接纳 Redis 用于快速高效地构建业务的应用服务。


阿里云持续对 Redis 的新版本发布快速跟进, 本次 7.0 包括之前的 6.0 版本都实现了在全球主流的云厂商之中的新版本首发。

image.png

虽然 Redis 社区发展很快,也及时进行新版本的迭代,但是国内用户对于新版本的接受速度依然较为缓慢。国外大量用户已经升级到 5.0 6.0 版本,但国内用户依然大量使用低版本,比如4.0、3.0 甚至 2.8。而很多国内开发者贡献的 feature 很大程度上都是来自于国内用户的真实需求

网络异常,图片无法展示
|
 

7.0 版本面世后,此前的 6.0 版本会逐渐进入低版本低维护状态,而更早的版本可能只会做一些安全漏洞上的修复甚至不再开发维护。如果业务一直跑在低版本上,肯定会出现一些稳定性和安全上的风险。

用户担心升级之后会存在兼容性的问题,导致一直在坚持使用低版本,而无法享受新版本里真正能解决需求的新特性。

新版本在各个方面都有增强,比如 Redis 4.0 lazy-free 功能:实现 lazy-free 之前, KEY 删除是非常大的痛点,可能会造成整个业务的中断或阻塞;再比如, Lua Redis 支持的脚本虚拟机,但是 Lua 本身的安全问题层出不穷,社区新版本一直在对其进行安全修复,但是对于大部分低版本,社区已经放弃维护了。

很多用户担心升级到了新版本之后会存在兼容性问题,这是合理的顾虑。为了解决这个顾虑,一方面云产品会及时跟进新版本的迭代,梳理这些新版本中的 breaking change ,让用户能更好地了解,可以提早尝试来验证;另一方面,我们也在与社区积极沟通,推动社区出一些官方的兼容性验证工具,给用户更多信心,让用户能够从低版本向高版本顺利迭代。

就目前来看, Redis 对于版本的向前兼容性已经较为完善,此外,类似兼容性的问题,用户也可以直接将顾虑反馈给社区,也希望有更多国内用户能够深度参与到 Redis 社区的建设中。

image.png

一项 feature 从最开始的立项到最后交付给用户,需要经过很多阶段,比如需求评审、代码开发、过程中的讨论、 code review 以及合并发布。如果用户能够参与到整个过程,就能够及时纠正开发者对这些 feature 需求的理解偏差,避免最后开发出来的 feature 与用户需求相差过大。


举个例子, 7.0 中的 client eviction 功能,就是从阿里云上的用户需求中提炼而来。Redis 作为内存数据库,与传统的数据库略有不同,所有数据都是存放在内存中。因此内存中不仅有用户的数据,还有一些元数据以及其他额外的内存消耗,这些额外的内存消耗有时也会对用户数据内存产生影响。


阿里云向社区提出需求,并与社区合作开发完成了这个需求。目前 client eviction 对于资源管理方面来说还只是比较初级的功能,在未来我们也会持续优化,在用户数据与运行内存之间实现更好的隔离。


总的来说,我们希望来自国内的开发者和用户都能够更深度、更积极地参与到社区的建设中,也希望用户能更主动地提出需求,不仅仅局限于 API 层面增加命令,也可以包括访问接入、可观测性、数据一致性以及安全等各个方面,推进社区发展进步,也使得 Redis 能够向真正的内存数据库发展。

真实用户更多地发声,才能为社区提供更有力的支持。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
监控 NoSQL Redis
开发者如何使用阿里云Redis
【10月更文挑战第2天】开发者如何使用阿里云Redis
438 0
|
7月前
|
NoSQL Cloud Native Redis
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
阿里云瑶池数据库团队后续将持续参与Valkey社区,如过往在Redis社区一样耕耘,为开源社区作出持续贡献。
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
|
7月前
|
NoSQL 关系型数据库 MySQL
开发者福音:用IDEA和Iedis2加速Redis开发与调试
开发者福音:用IDEA和Iedis2加速Redis开发与调试
100 0
开发者福音:用IDEA和Iedis2加速Redis开发与调试
|
缓存 NoSQL 中间件
ChaosBlade 项目指南:我是如何为社区贡献 Redis 故障场景
ChaosBlade 项目指南:我是如何为社区贡献 Redis 故障场景
729 17
|
NoSQL Redis 开发者
《国内开发者与Redis开源社区的发展》电子版地址
在Redis 6.0~7.0的版本迭代过程中,国内开发者在Redis开源社区的参与度持续加深、影响力不断提高。在Redis 6.0的规划中Redis社区成立了core team,阿里云有幸在core team的五个席位中占有一席,本次分享我们将介绍Redis开源社区的发展与国内开发者的关系。
313 0
《国内开发者与Redis开源社区的发展》电子版地址
|
算法 Java 大数据
7月10日云栖精选夜读丨ApsaraCache开源之路,阿里云Redis团队LC3全球顶级开源峰会获CRUG"开源社区最具影响力奖"
近日由The Linux Foundation主办的全球开源盛会LinuxCon + ContainerCon + CloudOpen(LC3)中国在北京国家会议中心举行,阿里云Redis团队也受邀参与了本次盛会并分享了ApsaraCache开源之路,对阿里云Redis在开源社区上做的改进和产品化做了深入解读,同时会上Redis中国用户组对阿里云Redis团队在开源社区上的贡献颁发了开源社区杰出贡献奖。
3169 0
7月10日云栖精选夜读丨ApsaraCache开源之路,阿里云Redis团队LC3全球顶级开源峰会获CRUG"开源社区最具影响力奖"
|
NoSQL 安全 Redis
开发者论坛一周精粹(第七期):阿里云Redis加速Discuz论坛访问
由于阿里云ECS服务器内存只有悲催的的1G,并且只剩下了几十MB,实在不想再糟蹋她了。 你是否还在为网站访问速度而苦恼,你是否还在恐惧全国各地而来的访客。不用慌、不用怕 阿里云Redis为你保驾护航排忧解难,在这互联网的冬天让你依靠温暖的胸膛。
2974 0
|
NoSQL Redis 开发者
Redis&MongoDB 社区双周刊第3期:Redis主从复制基本原理
云栖社区已有1000位Redis&MongoDB开发者,发布了5000+Redis文章,发布了2000+MongoDB文章,沉淀了800+的Redis精品问答,沉淀了1000+的MongoDB精品问答。
4645 0
|
存储 NoSQL 视频直播
【Redis&MongoDB 社区大群】往期直播内容合辑(持续更新)
为满足广大开发者对更多数据库产品的学习需求,我们特别新建了Redis&MongoDB社区交流群,邀请多位阿里数据库专家入驻,为广大云用户提供专业的技术分享及回答,定期在国内开展线下技术沙龙,专家技术直播,欢迎大家加入!
2260 0
|
新零售 缓存 NoSQL
Redis&MongoDB 社区双周刊第2期:Redis&MongoDB的同步、迁移以及混合云场景构建
云栖社区已有1000位Redis&MongoDB开发者,发布了5000+Redis文章,发布了2000+MongoDB文章,沉淀了800+的Redis精品问答,沉淀了1000+的MongoDB精品问答。
2373 0