Redis的集群模式

1. Redis三种集群模式

Redis 提供的三种集群模式各有其特点和适用场景,以下是对这三种模式的简要概述:

  1. 主从模式(Master-Slave Replication)

    • 在这种模式下,数据在主节点(Master)上进行写操作,然后异步复制到一个或多个从节点(Slave)。

    • 主节点负责数据的持久化和写入操作,从节点则提供读操作,实现读写分离,提高系统的读取性能。

    • 主从模式适合于数据量不是特别大,且对高可用性要求不是特别高的场景。

    • 缺点是当主节点发生故障时,需要手动进行故障转移,这可能导致短暂的服务中断。

  2. 哨兵模式(Sentinel)

    • 哨兵模式是主从模式的扩展,通过哨兵(Sentinel)进程来监控主节点的状态。

    • 哨兵可以自动检测主节点的故障,并在主节点不可用时自动进行故障转移,将一个从节点提升为新的主节点。

    • 哨兵模式提高了系统的可用性,但依然存在一定的局限性,比如哨兵本身也需要维护和监控。

    • 适用于对高可用性有一定要求,但不需要水平扩展的场景。

  3. 去中心化模式(Cluster)

    • 这是Redis的官方集群解决方案,采用去中心化架构,数据通过分片(sharding)分布在多个节点上。

    • 每个节点都存储一部分数据(槽),并且节点之间可以相互通信,实现数据的自动迁移和负载均衡。

    • 去中心化模式支持在线添加或移除节点,实现动态扩展。

    • 集群中的每个节点都可以处理读写请求,并且具有自动故障转移和数据复制的能力,从而提供高可用性和容错性。

    • 适合于需要水平扩展、高可用性和负载均衡的大型应用。

2. 为什么使用Redis集群

Redis集群之所以被广泛使用,主要是因为它提供了高可用性、扩展性、负载均衡、数据一致性、容错性等关键特性。通过在多个节点上分布式存储数据,Redis集群能够实现自动故障转移和负载均衡,从而提高系统的稳定性和响应速度。此外,Redis集群支持多种数据类型和灵活的部署方式,易于管理和集成,使其成为处理大规模数据和高并发访问的理想选择。

3. 主从模式

  • redis主从模式表示一个主节点跟若干个从节点。
  • 主节点可以负责写操作和读操作。
  • 从节点只负责读操作。
  • 主节点的数据会自动同步到所有的从节点上。

如何搭建redis主从模式

为了操作方便: 我在一台linux上跑三个redis服务器。 只要端口号不同即可。

修改配置文件

1.端口号

2.dump文件的名称

3.aof的名称

开启三台redis服务

命令:

redis-server redisXXX.conf

配置主从关系

配从不配主 slaveof 主节点IP 主节点port

info replication 查看主从的状态

思考:

  1. 如果某台slave宕机,如果恢复后是否具有master新增的数据呢。

  2. master宕机后,slave会不会自动选举拉大。 [不会] ---[]

发现主从模式的缺点: 不会自动选举master节点。导致一旦主节点宕机,无法进行写操作。

4. 哨兵模式

Redis的哨兵模式(Sentinel)是一种监控系统,用于实现主从复制架构中的高可用性。为了解决主从模式的缺陷: 当主节点宕机后,从节点无法直接上位。

准备条件

修改sentinel.conf

启动哨兵服务

redis-sentinel sentinel.conf

当6380端口下线之后会在6381和6382之间选出一个主节点

优点:

  • 哨兵模式是基于主从模式的,所有主从的优点,哨兵模式都具有。
  • 主从可以自动切换,系统更健壮,可用性更高。

缺点:

  • 哨兵依然是主从模式,没法解决写的压力,只能减轻读的压力
  • 存储得不到扩容,存储数据总量是主的数据总量
  • 当主服务器宕机后,从服务器切换成主服务器的这段时间,服务不可用。

5. 去中心化模式

去中心化模式,也称为Redis Cluster,是一种高度可扩展且具有高可用性的解决方案。

redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个整数结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。

当你往Redis Cluster中加入一个Key时,会根据crc16(key) mod 16384计算这个key应该分布到哪个hash slot中,一个hash slot中会有很多key和value。你可以理解成表的分区,使用单节点时的redis时只有一个表,所有的key都放在这个表里;改用Redis Cluster以后会自动为你生成16384个分区表,你insert数据时会根据上面的简单算法来决定你的key应该存在哪个分区,每个分区里有很多key。

准备三主三从

  1. 修改端口

  2. dump文件名

  3. aof文件名

  4. aof目录名

  5. 开启集群模式cluster-enabled yes

  6. cluster-config-file nodes-7001.conf

启动redis

分配槽以及主从关系

分槽,以及设置主从关系。 副本

redis-cli --cluster create --cluster-replicas 1 192.168.100.101:7001 192.168.100.101:7002 192.168.100.101:7003 192.168.100.101:7004 192.168.100.101:7005 192.168.100.101:7006

命令行的客户端

redis-cli -c -h 192.168.111.188 -p 7006

相关推荐
Kaede612 分钟前
如何应对Linux云服务器磁盘空间不足的情况
linux·运维·服务器
Zfox_2 小时前
Redis:Hash数据类型
服务器·数据库·redis·缓存·微服务·哈希算法
呼拉拉呼拉2 小时前
Redis内存淘汰策略
redis·缓存
Kookoos3 小时前
Dynamics 365 Finance + Power Automate 自动化凭证审核
运维·自动化·dynamics 365·power automate
陈丹阳(滁州学院)4 小时前
若依添加添加监听容器配置(删除键,键过期)
数据库·oracle
远方16095 小时前
14-Oracle 23ai Vector Search 向量索引和混合索引-实操
数据库·ai·oracle
apocelipes6 小时前
Linux c 运行时获取动态库所在路径
linux·c语言·linux编程
GUIQU.6 小时前
【Oracle】数据仓库
数据库·oracle
努力学习的小廉7 小时前
深入了解linux系统—— 进程池
linux·运维·服务器
恰薯条的屑海鸥7 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习