当前位置: 首页 > article >正文

Redis - 集群篇 - 集群模式

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

Redis 集群模式

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

Redis集群主要有三种模式:

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

主从复制模式

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

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

配置与实现

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

应用场景

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

哨兵模式

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

配置与实现

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

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

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

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

特点

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

应用场景

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

Redis切片集群

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

配置

  1. 配置redis节点:每个节点创建一个redis_port.conf文件
# cluster 节点端口,三个节点就三个端口
port 7001(port 7002 port 7003# 开启集群
cluster-enabled yes

# 配置节点的超时时间
cluster-time-out 10000
  1. 假设要启动三个主节点,做三个主从的的集群,那就是6个服务(三主三从,要配置的文件是真的多,又简单又繁琐),然后启动这三个主节点
reids> redis-server redis_port.conf
  1. 创建Redis Cluster
# --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. 分片:适合大规模数据量大 + 高性能场景

http://www.kler.cn/news/309701.html

相关文章:

  • 系统安全设计规范(Word完整版)
  • 如何用麦肯锡方法分析问题和解决问题?
  • navicate连接oracle数据库probable oracle net admin error
  • C++:内部类,匿名对象,操作符new与delete
  • uniapp 做一个查看图片的组件,图片可缩放移动
  • python中Web API 框架
  • Html css样式总结
  • 使用CUBE_MX实现STM32 DMA 功能(存储器到存储器)
  • Miracast/WifiDisplay开发相关的深入调研分析-android投屏实战开发
  • 字幕编辑用什么软件好?盘点国内外7款视频加字幕软件,简单高效!
  • [SWPU2019]Web11
  • Java文件输入输出及其常用类
  • Nginx反向代理出现502 Bad Gateway问题的解决方案
  • 如何使用 LangChain 的内置工具和工具包:深入探讨与实践指南
  • [Web安全 网络安全]-文件包含漏洞
  • 八股(8)——Spring,SpringBoot
  • 虾皮商品数据api全解析:高效获取,精准运营新利器
  • 记八月十五灵隐寺一游
  • presto/trino native 向量化 大数据计算引擎
  • MySQL之库和表操作
  • Rust 所有权 简介
  • 硬件基础知识
  • 计算机人工智能前沿进展-大语言模型方向-2024-09-13
  • [SIGGRAPH-24] CharacterGen
  • 使用c#制作一个小型桌面程序
  • 彩漩科技亮相第一届人工智能教育应用论坛,入选TOP30榜单,展示创新教育科技产品
  • Snowflake 如何通过 Apache Iceberg 和 Polaris 为大数据的未来提供动力
  • 【JavaEE初阶】多线程6(线程池\定时器)
  • C# 开发教程-入门基础
  • linux 双网卡服务器突然断电后网卡单通故障解决