个人观点:etcd 的红火来源于 kurbernetes 用 etcd 做服务发现,而 redis 的兴起则来源于 memcache 缓存本身的局限性。
etcd 是一种分布式存储,更强调的是各个节点之间的通信,同步,确保各个节点上数据和事务的一致性,
使得服务发现工作更稳定,本身单节点的写入能力并不强。
redis 更像是内存型缓存,虽然也有 cluster 做主从同步和读写分离,
但节点间的一致性主要强调的是数据,并不在乎事务,因此读写能力很强,qps 甚至可以达到 10 万 +
两者都是 k-v 存储,但 redis 支持更多的存储模式,包括 KEY,STRING,HMAP,SET,SORTEDSET 等等,
因此 redis 本身就可以完成一些比如排序的简单逻辑。而 etcd 则支持对 key 的版本记录和 txn 操作和 client 对 key 的 watch,因此适合用做服务发现。
日常使用中,etcd 主要还是做一些事务管理类的,基础架构服务用的比较多,容器类的服务部署是其主流。
而 redis 广泛地使用在缓存服务器方面,用作 mysql 的缓存,通常依据请求量,甚至会做成多级缓存,当然部分情况下也用做存储型 redis 做持续化存储。