、Codis究竟有多火?

Codis是国内最流行的自建Redis集,群方案,一点也不为过。客户曾这样说:

“Codis你不知道吗?我们公司用了好多年了,好东西呀。”​

的确,相比去中心化架构的开源Redis Cluster,Codis这种proxy集,群显然更“好用”,甚至就连RedisLabs官方推出了功能类似的redis-cluster-proxy来弥补传统Cluster缺点

Codis的确很优秀,不过我们可以负责任地说

华为云KV数据库GaussDB(for Redis)更优秀!​

、GaussDB(for Redis) vs Codis架构比拼

首先,我们从技术架构角度来看看两款产品究竟哪里不同

华为云GaussDB(for Redis)全面对比Codis​_负载均衡


如图,架构上的差异一目了然,我们可以自顶向下分析:

  1. 非标SDK vs 标准SDK公有云用户普遍讨厌“搞特殊”,然而Codis偏要搞特殊。Codis绑架用户必须使用非标Jodis SDK解决单点故障问题。但如果用户偏要使用标准SDK(如大名鼎鼎的Jedis)呢?Codis表示:对不起,跟高可用说拜拜吧

    相反,GaussDB(for Redis)使用上很友好业务侧使用任何标准SDK都行,同时高可用、自动负载均衡能力也全都在。上云搬迁时,GaussDB(for Redis)兼容方面得也很成熟不论客户原来代码用的是StandAlone还是Cluster、Sentinel等模式都可以0改造上云,真正做到开箱即用,体验感极佳。
  2. 无负载均衡 vs 专业的ELBCodis的层虽然提供了横向扩展能力但并不好用:要么牺牲高可用来使用标准SDK连接单点要么使用Jodis SDK,但代价是业务走向非标化

    而GaussDB(for Redis)提供ELB方便用户统一接入,在简化客户端复杂度的同时,还带来了专业的负载均衡能力。有了这个统一接入IP,用户相当于自己在使用一个超大容量的单机Redis,而无需操心底层细节。
  3. 存算耦合 vs 存算分离

可以认为,Codis是在多套Redis分片上做了一层封装,架构模型是传统的存算耦合。在大key、数据一致性、分片故障、扩缩容等典型场景中,都延续了开源Redis的长期“痛点”。​

GaussDB(for Redis)采用存算分离架构,计算层聚焦数据业务,存储层基于高性能分布式共享存储池,确保数据三副本存储强一致超高可靠。同时大幅节省硬件成本,帮业务减负。​

三、GaussDB(for Redis) vs Codis:特性比拼

从前文架构维度对比可以看出,GaussDB(for Redis)ELB业务侧“更好用”,下有存储池让数据“更可靠”,比自建Codis集,群优秀了太多。​

下面再从特性维度聊聊,GaussDB(for Redis)还能给业务侧带来哪些价值


  1. 兼容性GaussDB(for Redis)完全兼容Redis协议,同时兼容StandAlone/Cluster/Sentinel等多种SDK模式,方便业务搬迁上云。而Codis的兼容性则显得很差。
  2. 华为云GaussDB(for Redis)全面对比Codis​_数据_02


  1. 稳定性自建Codis集群稳定性强依赖开源Redis能力,不论是扩容还是大key场景都有相同痛点在此不再赘述

    GaussDB(for Redis)自研架构完全解决了开源Redis的fork问题稳定性大幅提升;同时,在与分布式存储池架构的深度合作下,数据的可靠性也全面优于Codis。
  2. 成本

Codis依然是传统纯内存Redis的封装,业务存不了多少就会触及成本痛点。随着业务长期发展,逐渐也会有数据降冷(如APP的冷用户),此时Codis里真正有价值的热数据占比越来越低,全量数据在内存中成本会相当高。​

GaussDB(for Redis)算力按需选配存储价格低非常适合大容量KV存储场景。​

总结

Codis是很多开发和运维同学曾青睐的产品是时代的记忆,但是,技术在快速发展。在这里,建议使用了Codis的业务可以考虑使用GaussDB(for Redis)感受华为云这款企业级KV数据库的全新价值。​