Redis 单机、主从、哨兵和集群架构详解和搭建

目录

前言

单机部署

检查安装 gcc 环境

下载安装 Redis

启动 Redis

关闭 Redis

配置Redis

主从部署

整体架构图

主从复制配置

重启 Redis

验证

 主从复制的作⽤

主从复制缺点

哨兵部署(Sentinel)

整体架构图

哨兵模式配置

启动哨兵

 验证

哨兵模式的作用

集群部署(Cluster)

整体架构图

 集群模式配置

启动 Redis

创建集群模式

查看集群信息

总结


前言

本教程将演示在 linux 环境下安装 Redis7,给⼤家最简单,最快捷的安装⽅式,其中包括单机部署、主从部署、哨兵部署、集群 部署的安装以及相应的架构介绍。

单机部署

检查安装 gcc 环境

-- 检查版本
gcc --version
-- 安装 gcc
yum install gcc

下载安装 Redis

-- 创建目录,⽂件归类
mkdir -p /opt/software/redis

-- 进⼊redis⽂件夹,使⽤wget下载
cd /opt/software/redis
wget https://download.redis.io/redis-stable.tar.gz

-- 解压下载的redis包
tar -xzf redis-stable.tar.gz

-- 进⼊redis-stable⽬录,然后使⽤make install 编译并安装,安装完成后 /usr/local/bin 会⽣成相应的服务
cd redis-stable
make install

-- 检查是否成功⽣成
ll /usr/local/bin

38da801e7aeb4bf686c88f845cce3cb9.png

 文件介绍:

  • redis-benchmark:性能测试⼯具
  • redis-check-aof:修复有问题的 aof ⽂件
  • redis-check-rdb:修复有问题的rdb⽂件
  • redis-sentinel:Redis集群使⽤
  • redis-server:Redis服务器启动命令
  • redis-cli:客户端,操作⼊⼝

启动 Redis

        在/opt/software/redis/redisstable/src 或者 /usr/local/bin ⽬录下的 redis-server 启动

Redis 服务.
-- Redis 源码路径下启动
./src/redis-server
-- 使⽤usr/local/bin 路径下启动(该⽬录下或者不在该目录下也可以启动)
redis-server

关闭 Redis

-- 退出 redis客户端
quit
或
ctrl + c

-- 关闭 redis
redis-cli shutdown

547a62b8e49a4b9b8c1726f1551ebf2b.png

配置Redis

前⾯的启动⽅式⽆法再后台运⾏,退出之后直接关闭了 Redis 服务,所以我们还需要针对 Redis 做⼀些设置。
-- 修改当前Redis⽬录下/opt/software/redis/redis-stable的 Reids.conf ⽂件
vi redis.conf

52a50115733747a6937e3df287cf4e49.png

如果想配置显示出行号,则可以 在打开 vim 后输⼊:“:set number ” 。
9b65c94014db4726838e0fb20354c0be.png

 配置如下:

#88⾏,修改bind 项,* -::* ⽀持远程连接
bind * -::* 

#310⾏,开启守护进程,后台运⾏
daemonize yes 

#356⾏,指定⽇志⽂件⽬录
logfile /opt/software/redis/redis-stable/redis.log 

#516⾏,指定⼯作⽬录
dir /opt/software/redis 

#1051⾏,给默认⽤户设置密码,主要是使⽤ redis-cli 连接 redis-server时,需要通过密码校验。⾃⾏学习,可以不设置。
#requirepass admin 

#112⾏,允许远程连接 如果不设置密码必须讲此设置关闭。
protected-mode no 
修改完成后,使⽤配置⽂件启动 Redis,并使⽤ redis-cli 连接测试,需要注意由于前⾯我们配置了安全密码,所以连接后需要先验证密码,否则会报错。
#根据redis配置,启动redis
redis-server redis.conf

#连接 redis
redis-cli

#如果设置密码,则需要验证权限
auth admin

00884d26bd5547238fbd5deee7b97afe.png

主从部署

        主从复制,是指将⼀台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且⼀个主节点可以有多个从节点(或没有从节点),但⼀个从节点只能有⼀个主节点。

整体架构图

9a27b3a2c2b9414fa29529e14a047ab2.png

主从复制配置

主节点不需要做任何改变,从节点都需要修改配置加上主节点信息
修改redis 配置文件
vi  redis.conf

# 从节点都添加主节点信息
replicaof 192.168.18.201 6379

重启 Redis

#如果启动了,就先关闭
redis-cli shutdown

#启动
redis-server redis.conf

验证

验证主从复制是否配置成功,使用以下命令, 查看redis 节点信息.

redis-cli info Replication

6ba8d23aaa0d4060a1006c2aaa31cad1.png

 主从复制的作⽤

  • 数据冗余:主从复制实现了数据的热备份,是持久化之外的⼀种数据冗余⽅式。
  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是⼀种服务的冗余。
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应⽤连接 主节点,读Redis数据时应⽤连接从节点),分担服务器负载;尤 其是在写少读多的场景下,通过多个从节点分担读负载,可以⼤ ⼤提⾼Redis服务器的并发量。
  • ⾼可⽤基⽯:除了上述作⽤以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis⾼可⽤的基础。

主从复制缺点

  • 复制延时,信号衰减
        由于所有的写操作都是现在master上操作,然后同步更新 到slave上,所以从master同步到slave机器上有⼀定的延迟, 当系统很繁忙的时候,延迟问题会更加严重,slave机器数量的增加也会使这个问题更加严重。
  • master挂了如何办?
          默认情况下,不会在slave节点中⾃动重选⼀个master,每 次都要⼈⼯⼲预。

哨兵部署(Sentinel)

       Redis主从复制会遇到一些限制和弊端,主机宕机之后,整个redis服务只能读不能写。为了解决这些问题,Redis引入了哨兵模式。

        Redis 哨兵模式是一种用于构建高可用性 Redis 集群的解决方案。它通过监控 Redis 实例的状态并自动进行故障转移,提供了客户端重定向机制以确保应用程序可以正常访问 Redis。

整体架构图

a8f24d0af82d454fb4828ac4f13e2147.png

哨兵模式配置

3 个机器都需要修改 sentinel.conf 配置,配置完成之后先从主节点开始启动哨兵。
#6⾏,关闭保护模式
protected-mode no 

#15⾏,指定sentinel为后台启动
daemonize yes 

#34⾏,指定⽇志存放路径
logfile /opt/software/redis/redis-stable/sentinel.log 

#73⾏,指定数据库存放路径
dir /opt/software/redis 

#93⾏,修改 指定该哨兵节点监控20.0.0.20:6379这个主节点,该主节点的名称是mymaster,最后的2的含义#与主节点的故障判定有关:⾄少需要2个哨兵节点同意,才能判定主节点故障并进⾏故障转移
sentinel monitor mymaster 192.168.18.201 6379 2

#134⾏,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel down-after-milliseconds mymaster 30000

#234⾏,故障节点的最⼤超时时间为180000(180秒)
sentinel failover-timeout mymaster 180000 

注意: 哨兵的端口是 26379 , 防火墙需要开放端口.

启动哨兵

redis-sentinel sentinel.conf 
启动后检查哨兵状态
redis-cli -p 26379 info sentinel

113330a098544e60be5b83074027d885.png

 验证

故障模拟
-- 直接停掉主节点服务
redis-cli shutdown

-- 观察哨兵⽇志,主节点下线,重新选举另一个节点为主节点
tail -f sentinel.log

3f76c5cf8b0b4a0092ca8459b4b66912.png

 在另一台以前是从节点的服务器查询, 发现切换成主节点了

redis-cli info replication

41c8dad27e5b45d48adad9bbccb80e01.png

 拓展命令:

-- 停⽌哨兵
redis-cli -p 26379 shutdown

哨兵模式的作用

  •     主从监控:监控reids主从是否正常运行
  •     消息通知:哨兵可以将故障转移的结果发送给客户端
  •     故障转移:如果Master异常,则会进行主从切换,将其中一个Slave作为新的Master
  •     配置中心:客户端通过连接哨兵来获得当前Redis服务的主节点地址

集群部署(Cluster)

        哨兵模式仍然面临内存容量和写入性能的限制,因为这种模式的写入能力仍然局限于单个节点。为了解决这一问题,Redis在3.x版本之后推出了Cluster集群模式。Cluster模式通过数据分片和节点的水平扩展,实现了更高效的内存利用和写入性能。

整体架构图

d71f1933e2324e33b5d6141c6bf149bc.png

 集群模式配置

三主三从模式配置

-- 创建集群配置⽂件夹,另外两个机器重复这个过程
mkdir -p /opt/software/redis/redis-stable/cluster
mkdir -p /opt/software/redis/cluster

6379 配置

vim ./cluster/redis_6379.conf

将下面内容复制进redis_6379.conf文件

# 允许所有的IP地址
bind * -::*
# 后台运⾏
daemonize yes
# 允许远程连接
protected-mode no
# 开启集群模式
cluster-enabled yes
# 集群节点超时时间
cluster-node-timeout 5000
# 配置数据存储⽬录
dir "/opt/software/redis/cluster"
# 开启AOF持久化
appendonly yes
# 端⼝
port 6379
# log⽇志
logfile "/opt/software/redis/redis-stable/cluste
r/redis6379.log"
# 集群配置⽂件
cluster-config-file nodes-6379.conf
# AOF⽂件名
appendfilename "appendonly6379.aof"
# RBD⽂件名
dbfilename "dump6379.rdb"

6380 配置

vim ./cluster/redis_6380.conf

将下面内容复制进redis_6380.conf文件

# 允许所有的IP地址
bind * -::*
# 后台运⾏
daemonize yes
# 允许远程连接
protected-mode no
# 开启集群模式
cluster-enabled yes
# 集群节点超时时间
cluster-node-timeout 5000
# 配置数据存储⽬录
dir "/opt/software/redis/cluster"
# 开启AOF持久化
appendonly yes
# 端⼝
port 6380
# log⽇志
logfile "/opt/software/redis/redis-stable/cluste
r/redis6380.log"
# 集群配置⽂件
cluster-config-file nodes-6380.conf
# AOF⽂件名
appendfilename "appendonly6380.aof"
# RBD⽂件名
dbfilename "dump6380.rdb"

启动 Redis

配置⽂件准备完成之后,启动所有redis服务,⽤cluster配置⽂件
redis-server ./cluster/redis_6379.conf
redis-server ./cluster/redis_6380.conf

其他两台机器重复上面的操作.

注意: 启动 redis 时, 要注意 以前启动的redis和哨兵需要关闭

# 查看运行中的进程信息
netstat -ntlp

86907b29300b433eae5def167d9fd1e4.png

 然后使用kill  pid 命令删除这个进程

#关闭哨兵
kill 29733
#关闭redis
kill 20317

创建集群模式

当三台机器的6台redis都启动完成, 则使用以下命令,创建集群.

-- 创建三主三从集群模式,每⼀个主节点带⼀个从节点
redis-cli --cluster create --cluster-replicas 1 192.168.75.129:6379 192.168.75.129:6380 192.168.75.131:6379 192.168.75.131:6380 192.168.75.132:6379 192.168.75.132:6380

查看集群信息

-- 查看集群信息
redis-cli cluster info
-- 查看单个节点信息
redis-cli info replication
-- 查看集群节点身份信息
redis-cli cluster nodes

注意: 集群用到的端口会加10000,所以16379和16380 端口的防火墙也要开放.

总结

edis主从:可实现高并发(读),典型部署方案:一主二从

redis哨兵:可实现高可用,典型部署方案:一主二从三哨兵

redis集群:可同时支持高可用(读与写)、高并发,典型部署方案:三主三从

三者之间对比:

217df879980a44e5a07a46eb51944a2b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/902820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Axure简单进度条制作,原型文件可下载

1.先看效果 2.需要用到的主要元件 a动态面板遮挡进度条左侧部分 b进度条底色背景 c百分比数字 3.将进度条、背景、百分比数字设置为隐藏 4.为按钮【选择文件】添加事件,并显示相应的原件 显示进度条process向右侧滑动 5.设置百分比数字及显示时每25毫秒加1 如…

html----图片按钮,商品展示

源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图标</title><style>.box{width:…

MFC的SendMessage与PostMessage的区别

一、SendMessage 同步操作&#xff1a; SendMessage 是一个同步函数&#xff0c;它会将消息发送到指定的窗口&#xff0c;并等待该窗口的消息处理过程完成&#xff0c;然后返回。这意味着它会阻塞当前线程&#xff0c;直到消息处理完成。 直接调用&#xff1a; SendMessage 会…

解决Redis缓存击穿(互斥锁、逻辑过期)

文章目录 背景代码实现前置实体类常量类工具类结果返回类控制层 互斥锁方案逻辑过期方案 背景 缓存击穿也叫热点 Key 问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的 key 突然失效了&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击 常见的解决方案…

详细解读 CVPR2024:VideoBooth: Diffusion-based Video Generation with Image Prompts

Diffusion Models专栏文章汇总:入门与实战 前言:今天是程序员节,先祝大家节日快乐!文本驱动的视频生成正在迅速取得进展。然而,仅仅使用文本提示并不足以准确反映用户意图,特别是对于定制内容的创建。个性化图片领域已经非常成功了,但是在视频个性化领域才刚刚起步,这篇…

10.28.2024刷华为OD C题型

文章目录 HJ9HJ10HJ11HJ13HJ17 HJ9 HJ10 HJ11 HJ13 HJ17

2024年【浙江省安全员-C证】新版试题及浙江省安全员-C证模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 浙江省安全员-C证新版试题考前必练&#xff01;安全生产模拟考试一点通每个月更新浙江省安全员-C证模拟考试题目及答案&#xff01;多做几遍&#xff0c;其实通过浙江省安全员-C证模拟考试很简单。 1、【多选题】5kW以…

《计算机网络网络层:连接虚拟世界的关键桥梁》

一、网络层概述 网络层在计算机网络中占据着至关重要的地位&#xff0c;它作为连接不同网络的关键层次&#xff0c;起着承上启下的作用。网络层的主要任务是实现网络互连&#xff0c;将数据设法从源端经过若干个中间节点传送到目的端&#xff0c;为分组交换网上的不同主机提供通…

【LeetCode每日一题】——862.和至少为 K 的最短子数组

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 前缀和 二【题目难度】 困难 三【题目编号】 862.和至少为 K 的最短子数组 四【题目描述】 …

【Vue】word / excel / ppt / pdf / 视频(mp4,mov) 预览

文件预览 Vue3一. word二. excel三. ppt四. pdf4.1 vue-pdf-embed4.2 iframe 五. 视频六&#xff1a;扩展——kkFileView Vue3 一. word 安装&#xff1a;npm install docx-preview父页面 <template><div><DocPreviewv-if"filePath.includes(docx)"…

【Go-Taskflow:一个类似任务流的有向无环图(DAG)任务执行框架,集成了可视化和性能分析工具,旨在简化并行任务的复杂依赖管理】

Go-Taskflow是一个静态有向无环图&#xff08;DAG&#xff09;任务计算框架&#xff0c;它受到taskflow-cpp的启发&#xff0c;结合了Go语言的原生能力和简洁性&#xff0c;特别适合于并发任务中复杂的依赖管理。 Go-Taskflow的主要特点包括&#xff1a; 高可扩展性&#xff1…

两套环境同一个接口返回不一致的排查

最近遇到个文件下载的问题&#xff0c;在开发环境好好的&#xff0c;测试环境就不行404。查了接近两天才解决。整个思路做个记载。 问题描述&#xff1a;通过视图解析器下载项目中的静态资源文件模板。也就是sringboot的resource目录下的文件。开发环境下载正常&#xff0c;测…

PHP员工管理系统小程序

&#x1f4bc;高效管理&#xff0c;从“员工管理系统”开始&#x1f4bc; &#x1f4cb;【一键录入&#xff0c;信息整合】&#x1f4cb; 你是否还在为整理员工信息而手忙脚乱&#xff1f;纸质档案易丢失、电子表格易混乱&#xff0c;这些问题在“员工管理系统”面前都将迎刃…

MemoRAG:重新定义长期记忆的AI问答模型

MemoRAG模型是如何实现长记忆的&#xff1f; ©作者|Blaze 来源|神州问学 引言 随着人工智能的发展&#xff0c;AI问答模型在各种应用场景中表现出色&#xff0c;尤其是在信息检索和知识问答领域。传统的RAG模型通过结合外部知识库的实时检索与生成模型&#xff0c;极大地…

再次被约谈了

大家好&#xff0c;我又来了&#xff0c;从上周一开始&#xff0c;一直听到不好的传言&#xff0c;下午听说有些人被约谈了&#xff0c;看来裁员工作已经开始了 就在我坐立不安时&#xff0c;看到领导飞书发来信息&#xff1a; 看来终于轮到我了&#xff0c;虽然做好了心里准…

ELK的ElasticStack概念

目录 传送门前言一、ElasticStack是什么二、ElasticStack数据格式1、Elasticsearch的概述2、Elasticsearch核心概念&#xff08;1&#xff09;接近实时&#xff08;NRT&#xff09;&#xff08;2&#xff09;集群&#xff08;cluster&#xff09;&#xff08;3&#xff09;节点…

从零开始docker-compose入门教程,快速上手多容器管理!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 docker-compose 📒📝 Docker Compose的作用📝 Docker Compose的安装1. 在Linux或macOS上安装2. 在Windows上安装3. 在Linux或macOS上卸载4. 在Windows上卸载📝 Docker Compose基本语法📝 示例:使用Docker Compose部署…

聚水潭到畅捷通T+的数据高效集成方案解析

聚水潭到畅捷通T的数据高效集成方案解析 聚水潭销售出库单到畅捷通销货单的高效数据集成方案 在企业日常运营中&#xff0c;数据的高效流转和准确对接是提升业务效率的关键。本文将分享一个实际案例&#xff0c;展示如何通过轻易云数据集成平台&#xff0c;将聚水潭奇门系统中…

Flink(一)

目录 架构处理有界与无界数据部署应用到任意地方运行任意规模应用利用内存性能 流应用流处理应用的基本组件流状态时间 应用场景事件驱动应用事件驱动应用的优势Flink如何支持事件驱动应用&#xff1f; 典型的事件驱动示例 数据分析应用流式分析应用的优势&#xff1f;Flink 如…

word怎么压缩文件大小?这几种压缩word文件方法超级好用!

word怎么压缩文件大小&#xff1f;在当今快节奏的工作环境中&#xff0c;Word文档已成为我们日常工作的得力助手&#xff0c;然而&#xff0c;随着文档数量的不断增加&#xff0c;文档体积的膨胀成为了一个亟待解决的问题&#xff0c;这不仅导致了存储空间的紧张&#xff0c;也…