Redis - 集群篇 - 集群模式

面试的时候被人问到集群的问题,搬砖仔哪懂这么多,继续整理一下知识点

Redis 集群模式

Redis集群就是将多个Redis节点连接在一起, 让Redis在不同的节点上同时提供服务。

Redis集群主要有三种模式:

  • 主从复制模式(master-salve)
  • 哨兵模式(sentinel)
  • 切片集群模式(cluster)

主从复制模式

这个模式是一种最基本的模式,可以将主节点复制到一个或者多个节点上来实现数据的冗余和备份。

主节点主要是用来写,在写的同时从节点也会从主节点中捞数据过来写写入。(这个特性是不是就可以用在从节点来做读的操作,然后演变成读写分离。还得思考一下怎么实现)

配置与实现

  1. 配置主节点:主节点不需要做什么配置,默认就会监听所有客户端的请求。
  2. 配置从节点:设置一个和主节点不一样的端口号,并且添加一个配置
shell 复制代码
# 从节点的端口号
port 63xx
# 主节点的ip和主节点的端口号配置上
replicaof 127.0.0.1 6379
  1. 验证

应用场景

  • 数据备份和数据恢复
  • 读写分离
  • ...

哨兵模式

哨兵模式是在上面的模式的基础上,加入了一个节点------哨兵节点,这个节点是一个特殊的节点,会监控主节点和从节点的状态。当主节点挂掉了之后,哨兵节点会自动选举处一个主节点并且通知其他从节点和客户端进行故障转移。

配置与实现

  1. 配置主从复制:首先,因为是基于主从复制的,所以我们先跟上面一样配置一次主从复制
  2. 配置哨兵节点:创建一个配置文件,并添加配置
shell 复制代码
# 配置哨兵节点的端口号
port xxxxx

# 配置被监控的主节点 主节点ip 主节点端口 最小哨兵数
sentinel monitor master 127.0.0.1 6379 2

# 配置判断主节点的失效时间 被监控的主节点名称 毫秒数
sentinel down-after-milliseconds master 30000

# 配置主节点故障转移的时间 被监控的主节点名称 毫秒数
sentinel failover-timeout master 90000
  1. 启动哨兵节点
shell 复制代码
redis > redis-sentinel /sentinel.conf

特点

可以自动故障转移,出问题的时候可以自动转移到字节点的redis上,并且有主从复制模式的特性,但是配置和管理多个哨兵节点的时候会比较麻烦,并且对节点的内存有要求。

应用场景

  1. 数据备份和容灾(跟主从复制相同的场景)
  2. 有高可用需求的场景

Redis切片集群

当有很多数据都涌入单机的Redis的时候,Redis就顶不住了,Redis提供了一个方案,叫做Redis切片集群(Redis Cluster),它可以将数据分布在不同的服务器上,降低对单个Redis的压力(将key-value对分散在多个节点上),提高性能。每个节点负责部份的数据也叫做槽位。

配置

  1. 配置redis节点:每个节点创建一个redis_port.conf文件
shell 复制代码
# cluster 节点端口,三个节点就三个端口
port 7001(port 7002 port 7003)

# 开启集群
cluster-enabled yes

# 配置节点的超时时间
cluster-time-out 10000
  1. 假设要启动三个主节点,做三个主从的的集群,那就是6个服务(三主三从,要配置的文件是真的多,又简单又繁琐),然后启动这三个主节点
shell 复制代码
reids> redis-server redis_port.conf
  1. 创建Redis Cluster
shell 复制代码
# --cluster-replicas 1 表示一个主节点只有一个从节点
redis> redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1

特点

数据可以分片存储,可以使用很多的节点进行大规模的数据存储。

负载均衡,资源利用合理

自动故障转移,这玩意跟上面哨兵也是有点类似的(感觉就在套娃?)

配置也是真的繁琐,还得一个个创建。

应用场景

性能要求高,高可用场景,数据量比较大的需求。

总结

  1. 主从复制:备份和读写分裂,最基础的场景
  2. 哨兵:害怕服务挂掉的场景(高可用)
  3. 分片:适合大规模数据量大 + 高性能场景
相关推荐
阿乾之铭15 分钟前
Spring Boot中集成Redis与MySQL
spring boot·redis·mysql
FIN技术铺1 小时前
问:数据库的六种锁机制实践总结?
数据库·sql·oracle
程序员劝退师_2 小时前
优惠券秒杀的背后原理
java·数据库
Gauss松鼠会2 小时前
GaussDB全密态数据库等值查询
数据库·oracle·gaussdb
JSUITDLWXL2 小时前
在Oracle数据中更新整个对象和更新对象的某几个字段时,他们的锁是相同的吗
数据库·oracle
杏花春雨江南2 小时前
ddl/dml/dcl
数据库·oracle
Matrix702 小时前
HBase理论_HBase架构组件介绍
大数据·数据库·hbase
不太灵光的程序员2 小时前
【HBase分布式数据库】第七章 数据的导入导出 importtsv导入数据
数据库·分布式·hbase
Mephisto.java2 小时前
【大数据学习 | HBASE高级】region split机制和策略
数据库·学习·hbase
Lucifer三思而后行2 小时前
YashanDB YAC 入门指南与技术详解
数据库·后端