首页 > 数据库 >etcd与redis之间的区别

etcd与redis之间的区别

时间:2024-03-28 15:11:07浏览次数:21  
标签:存储 区别 redis etcd 一致性 保证数据 节点

一、简介

我们之前用了redis,那么好用为什么还要来用etcd呢,这里就来和大家聊聊为什么有的业务场景选择etcd。

分析:在当今的分布式系统中,数据存储及一致性相当重要。etcd和redis都是我们最受欢迎的开源分布式数据存储的解决方案,但是他们有着不同的试用场景。下面我个人对其中二个的见解。

1.数据模型

etcd:键值存储,支持原子性和分布式事务,树状结构,键可为任意字节数组,值可任意二进制
redis:键值存储,支持多种数据结构:字符串,哈希,列表,集合,有序集合,可存储多种类型数据

2.一致性

etcd:强一致性,副本始终保持相同状态,就是说,你写了数据到主节点,从节点会立即更新,保证数据一致性及可用性
redis: 保证最终一致性,存在短暂的数据不一致的情况,其持久化机制为:rdb和aof,以保证数据最终一致性

3. 可用性

etcd: 高可用,支持Raft分布式一致性算法,就是说即使有节点挂掉了也会保证数据一致性及其他节点的可用性
redis: 高可用,主从复制和哨兵选择模式,保证数据在最短时间内可以恢复

4.性能选择

etcd: 高性能,可并发读写,高吞吐量,低延迟
redis: 高性能,基于内存的存储,多种结构储存方式,读取速度快

5.可扩展性

etcd: 水平扩展,多节点可提高集群的容量及性能
redis: 垂直扩展,添加多个节点的内存和cpu资源可提交性能

6.特点对比

image

7.场景对比

etcd:
分布式协调服务,如服务发现、配置管理、锁服务
存储需要强一致性、高可用性和并发读写的关键数据
Redis:
缓存服务,加速数据库或其他慢速存储的访问
会话管理,存储用户会话信息和状态
实时分析,存储和处理流数据

8.实战用法

etcd:

使用强一致性特性来保证数据的可靠性和可用性
启用 Raft 日志压缩以减少存储空间占用
监控集群健康状况,及时发现和解决问题

Redis:

根据数据访问模式选择合适的持久化策略
使用主从复制或哨兵模式提高可用性和故障恢复能力
优化数据结构以提高查询性能

9.总结

etcd 和 Redis 都是分布式数据存储的优秀选择,但它们具有不同的特性和适用场景。etcd 提供强一致性、高可用性和并发读写能力,适合于需要这些特性的场景。Redis 提供多种数据结构、高性能和读密集型特性,适合于缓存、会话管理和实时分析等场景。通过理解它们的差异,开发人员可以根据具体需求选择最合适的解决方案。

本文部分参考原文链接:https://blog.csdn.net/star19830909/article/details/136828995

标签:存储,区别,redis,etcd,一致性,保证数据,节点
From: https://www.cnblogs.com/qxlzzj/p/18101733

相关文章

  • 在Vue.js框架中,activated和created的区别
    在Vue.js框架中,activated和created两个钩子函数都是在组件被创建时执行的函数,但它们的使用场景略有不同。createdcreated钩子函数是在组件被创建(即实例化)时执行的,可以用它来初始化组件的数据、监听事件、调用方法等操作。它是组件生命周期中的第一个钩子函数,通常用于组件初......
  • git pull 和 git fetch的区别?
    `gitpull`和`gitfetch`都是Git版本控制系统中用于与远程仓库交互的命令,但它们在操作和结果上有一些关键的区别:1.**操作内容**:-`gitfetch`:这个命令仅仅下载远程仓库的更新信息(即远程分支的最新提交),并将这些更新保存到本地仓库的远程分支跟踪信息中。它不会自动合并任何更......
  • etcd可视化连接工具
    一、官方快速上手视图工具Playground地址:http://play.etcd.io/play注释:其使用和redis差不多,主从选举模式,master节点挂了,从节点就会参与选举master,主节点可以读写,从节点只能读。二、Etcd的可视化工具etcdkeeper安装包下载地址如下:地址:https://github.com/evildecay/etcdke......
  • 怎样去保证 Redis 缓存与数据库双写一致性?
    解决方案那么我们这里列出来所有策略,并且讨论他们优劣性。先更新数据库,后更新缓存先更新数据库,后删除缓存先更新缓存,后更新数据库先删除缓存,后更新数据库先更新数据库,后更新缓存    这种方法是不推荐使用的,因为在更新缓存那一步有的业务需求缓存中的值并不是从数据......
  • npm run dev 和 npm run serve 区别
    在日常运行vue项目中在终端运行命令有时用到npmrunserve有时是npmrundev。那么,什么时候用到serve,什么时候用到dev呢?他们的区别是什么?一般在vue3.x的时候用npmrunserve,vue2.x项目运行的时候用到npmrundev,dev是vuecli2的默认执行命令,serve是vuecli4的......
  • etcd安装(docker)
    一、拉去官方镜像dockerpullquay.io/coreos/etcd:v3.5.0二、创建etcd容器dockerrun-d\-p2379:2379\-p2380:2380\--nameetcd\quay.io/coreos/etcd:v3.5.0\/usr/local/bin/etcd\-advertise-client-urlshttp://0.0.0.0:2379\-listen-client-......
  • 如何实现Redis集群的高可用性
    在实际应用中,确保Redis集群的高可用性是至关重要的。以下是一些常见的实现高可用性的方法和相关代码示例。1、主从复制(Master-SlaveReplication):原理:主节点负责处理数据写入操作,而从节点则从主节点复制数据。这样,即使主节点发生故障,从节点可以升级为主节点,继续提供服务......
  • Docker expose指令和-p 指令指定的端口区别
    expose指令用法该 EXPOSE 指令通知Docker容器在运行时侦听指定的网络端口,可以指定端口是侦听TCP还是UDP,如果未指定协议,则默认为TCP。EXPOSE80/tcpEXPOSE80/udpEXPOSE 指令实际上不会发布端口。它充当构建映像的人员和运行容器的人员之间的一种文档,用于发布要......
  • PHP round 和number_format 区别
    number_format和round有什么区别?number_format()和round()在PHP中的底层计算方法并不完全一样,主要体现在它们的目的和结果表现形式上的差异,同时也可能影响到精度:round()函数主要用于对浮点数进行数学意义上的四舍五入,它的重点在于数值本身的精度调整。该函数接收两个参......
  • Redis的相关配置
    #bind 127.0.0.1                   #注释掉这一句,使redis可以外部访问port 6379                         #默认端口,可以改成别的端口protected-mode yes                #修改为yes,开启保护模式,默认是yes#daem......