在功能上 , 不仅仅包括API层面的增加 , 包括接入 , 可观测性 , 一致性 , 一致性和安全等目前社区都在等待需求中 。 虽然core team member可以代表国内用户来把一些需求写进roadmap , 但是真实用户的发声会提供更有力的支撑 。
Redis使用场景拓展与展望--Redis还能做什么? 多模服务进入爆发期
Redis是一直贴着用户使用发展起来的 , 它如此受欢迎主要因为两个特点 , 极高的性能以及丰富、方便使用的数据结构 , 这些简单好用的数据结构能够大幅度降低开发业务复杂度 。
我们可以看到 , 以Redislabs为代表的厂商正在大力的丰富Redis的数据结构(modules) , 如RedisSearch、Redis-Json、RedisGraph、RedisTimeSeries和RedisBloom等 。
同样的 , 阿里云内存数据库Tair很早就在研发各类增强数据结构和模块 , 目前我们在公共云Tair服务中提供的商业化扩展型数据结构比Redislabs提供的更多 , 部分模块功能更强 , 有兴趣可参见文档(本文末尾参考资料) 。
目前已有大量云上用户在利用Tair增强型数据结构来构建代码 , 提高开发效率 , 甚至完成此前难以完成的工作 。 2022年是一个Redis扩展结构的爆发年 , 业内已经渡过接纳期 , 进入高速发展阶段 。 无论是Tair还是Redis , 我们相信不断丰富的数据结构能够让它们走的更远 , 从缓存演变为高性能的计算型内存数据库 , 突破、并解决更多场景问题 。
一致性能力上的发展
落盘一致性和副本一致性是使用数据库绕不开的两个话题 。 长期以来许多人对Redis的应用场景仅仅认定为缓存(尤其是国外用户) 。 Redis自诞生之初便支持持久化机制RDB和AOF , 并且AOF还提供了不同级别的持久化语义:如appendfsync采用最高级别always时可以保证数据完全落盘不丢失 , 具备与传统数据库一样的强落盘一致性 。
在多副本一致性上 , 主要是指主备一致性上 , 原生的Redis仍旧采用异步复制 , 数据修改操作只要在本地执行完成就会返回结果 , 相比于其他数据库没有提供副本间数据强一致的语义 。 这也限制了Redis的使用场景 , 在对数据可靠性有极高要求的用户(例如金融行业 , 和传统行业)中还没有被完全接纳 。
目前业内也都在对Redis的持久化能力上进行发展 。 比较有代表性的 , 是阿里云的Tair持久内存版、AWS的MemoryDB、和业内开源的一些Redis-like的基于rocksdb的系统 , 商业化如Tair的容量存储版(前混合存储) 。
表1: 社区Redis和其他商业化、开源产品的落盘一致性与副本一致性对比 注1:与开源Redis社区版比较 注2:与开源Redis基于内存的使用成本比较 注34:来自AWS官方博客测试数据
综合来看 , 随着用户对Redis的应用范围的扩大 , 与此同时对于容量、成本和数据可靠性的需求也在不断提升 , 这些也逐渐成为了衡量Redis企业级能力的重要指标 。 各大厂商和开源产品也都在构建这些能力上提出了许多解决方案 。 下面介绍一些典型产品和方案 。
AWS的MemoryDB
AWS MemoryDB的思路是基于类似Aurora的共享存储概念 , 把日志存放在远端共享存储中 , 同时内存中仍然保留Redis原有的结构 。 通过这种方式提升数据的持久化一致性 , 同时也保证了数据读取的延时和吞吐;而缺点则同样因为日志保存在远端 , 写入性能严重下降(仅有ElastiCache也即Redis社区版的15%~25% , 该数据来自AWS官方评测 , 见本文末尾参考资料) 。 在主备一致性上 , 由于直接采取日志的物理复制 , 所以主备一致性近似接近落盘一致性 。
值得一提的是原来AOF rewrite这种压缩(compaction)引起的开销也因为在远端做掉而规避掉 , 因此是一种很彻底的云原生解法 。
阿里云自研内存数据库Tair
在持久化上阿里云走了另外一条路 , 通过引入新介质持久化内存来解决成本 , 大容量和持久化能力的问题 。 这个方案带来的挑战是使用持久化内存存储结构设计上较为复杂 , 既要控制性能衰减 , 又要保证兼容性 。 Tair持久内存很好的解决了这些问题 , 对比MemoryDB成本更低 , 读性能基本持平的情况下写入的速度也更快(见本文末尾参考资料) , 更关键的是基本原封原样的兼容了Redis API , 大幅降低了用户的切换成本 。
并且 , Tair持久内存型还支持半同步和强写入一致性 , 无论MemoryDB还是Tair持久内存都真正的做到了内存数据库的数据容错性要求 。
其他开源产品的发展
国内也出现了一些原创性的优秀落盘开源产品(Redis-Like系统) , 这些产品大都基于LSM存储结构如rocksdb上的 。 它们的优点主要是磁盘介质相对内存更为便宜 , 但同样目前存在的缺点也非常多:运维复杂度较高 , 直接映射为运维成本、KV无法原生的支持Redis的数据结构、把Redis的强类型变成弱类型等等 。
- 阿里巴巴|马云要“收网”了?以后这项服务要收费!网友:没有免费的午餐!
- 音箱|618音频种草进阶篇:享受每一刻的音质体验,从TWS到音箱套装!
- 阿里巴巴|阿里又搞大动作!推出全新CIPU芯片,想取代CPU的地位
- 雷克沙|从NM620到NM800,再到NM760,雷克沙的固态宇宙是如何打造的
- 阿里巴巴|阿里发布新技术,旧格局被打破,这次中国企业又走在世界前列!
- 华为鸿蒙系统|华为鸿蒙系统2k屏手机,徕卡双摄,从4499跌到955元,降价3544元
- 小米科技|从小米11Ultra换成vivoX80,体验了一周后,有些话不吐不快
- 革命|从内到外全新模具!机械革命蛟龙16游戏本深度评测
- 罗技|从罗技2022财年的业绩看,疫情带来的外设增长,差不多也结束了
- 阿里巴巴|阿里云盘新增“挂载盘”功能