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做持续化存储。