菜鸟笔记
提升您的技术认知

etcd和redis 区别和对比

Etcd 特点

etcd是一种分布式存储,更强调的是各个节点之间的通信,同步,确保各个节点上数据和事务的一致性,使得服务发现工作更稳定,本身单节点的写入能力并不强。

  • 简单:定义清晰、面向用户的API(grpc)。
  • 安全:可选的客户端TLS证书自动认证。
  • 快速:支持每秒 10,000 次写入。
  • 可靠:基于Raft算法确保强一致性。

Redis 特点

redis更像是内存型缓存,虽然也有cluster做主从同步和读写分离,但节点间的一致性主要强调的是数据,并不在乎事务,因此读写能力很强,qps甚至可以达到10万+。

redis支持更多的存储模式,包括KEY,STRING,HMAP,SET,SORTEDSET等等,因此redis本身就可以完成一些比如排序的简单逻辑。

区别和对比

etcd 和 redis 都支持键值存储,也支持分布式特性,redis支持的数据格式更加丰富,但是他们两个定位和应用场景不一样,关键差异如下:

  • 两者都是k-v存储。
  • redis在分布式环境下不是强一致性的,可能会丢失数据,或者读取不到最新数据。
  • redis的数据变化监听机制没有etcd完善。
  • etcd强一致性保证数据可靠性,导致性能上要低于redis。
  • etcd则支持对key的版本记录和txn操作和client对key的watch,因此适合用做服务发现。
  • etcd和ZooKeeper是定位类似的项目,跟redis定位不一样。
  • 日常使用中,etcd主要还是做一些事务管理类的,基础架构服务用的比较多,容器类的服务部署是其主流。
  • 而redis广泛地使用在缓存服务器方面,用作mysql的缓存,通常依据请求量,甚至会做成多级缓存,当然部分情况下也用做存储型redis做持续化存储。