REDIS主从配置

目录

前言

一、概述

二、作用

三、缺点

四、redis主从复制的流程

五、搭建redis主从复制

总结



前言

Redis的主从配置是指在Redis集群中,将一个Redis节点配置为主节点(master),其他节点配置为从节点(slave),主节点负责写操作和部分读操作,从节点负责读操作。
主从配置的作用主要有以下几点:


提高读写性能:主节点负责写操作,从节点负责读操作,实现了读写分离,有效提高了系统的读写性能。从节点可以接受主节点的复制数据,这样读操作可以在从节点上执行,减轻了主节点的负载。


提高可用性:主节点故障时,从节点可以接替主节点的角色,继续提供服务。当主节点恢复后,可以重新加入集群,重新成为从节点,保证了系统的高可用性。


数据备份:从节点通过复制主节点的数据,实现了数据的备份。当主节点故障时,从节点可以提供最新的数据,避免数据丢失。


故障恢复:当主节点故障时,可以通过从节点快速恢复主节点的数据。从节点会自动发现并选举一个新的主节点,保证系统的正常运行。


扩展性:通过增加从节点,可以提高系统的读取性能和容量。当系统需求增加时,可以通过增加从节点来扩展系统的处理能力。


总的来说,主从配置可以提高Redis集群的性能、可用性和扩展性,保证数据的备份和故障恢复。
 


一、概述

redis主从复制是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。

二、作用

数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

高可用:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

三、缺点

故障恢复无法自动化;

写操作无法负载均衡;

存储能力受到单机的限制。

四、redis主从复制的流程

第一步:若启动一个Slave机器进程,则它会向Master机器发送一个“sync command”命令,请求同步接。

第二步:无论是第一次连接还是重新连接,Master机器都会启动一个后台进程,将数据快照保存到数据文件中(执行rdb操作),同时Master还会记录修改数据的所有命令并缓存在数据文件中。 

第三步:后台进程完成缓存操作之后,Maste机器就会向Slave机器发送数据文件,Slave端机器将数据文件保存到硬盘上,然后将其加载到内存中,接着Master机器就会将修改数据的所有操作一并发送给Slave端机器。若Slave出现故障导致宕机,则恢复正常后会自动重新连接。

第四步:Master机器收到Slave端机器的连接后,将其完整的数据文件发送给Slave端机器,如果Mater同时收到多个Slave发来的同步请求,则Master会在后台启动一个进程以保存数据文件,然后将其发送给所有的Slave端机器,确保所有的Slave端机器都正常。

五、搭建redis主从复制

我们搭建一主三从的模式

1.在主服务上的操作

修改配置文件vim /etc/redis.conf

设置监听地址

关闭保护模块

设置允许后台运行

重启服务,查看端口

[root@localhost ~]# vim /etc/redis.conf 
[root@localhost ~]# systemctl restart redis
[root@localhost ~]# netstat -anput |grep redis
tcp        0      0 192.168.73.10:6379      0.0.0.0:*               LISTEN      12833/redis-server  
[root@localhost ~]# 

2.在从上的操作

将 配置文件redis.conf 拷贝,并以端口号命令例如

[root@localhost etc]# cp redis.conf /opt/redis_6380.conf
[root@localhost etc]# cp redis.conf /opt/redis_6381.conf
[root@localhost etc]# cp redis.conf /opt/redis_6382.conf
[root@localhost etc]# 

分别编辑他们需要修改的内容

修改配置文件
    bind  0.0.0.0
    port  不同的端口号
    protected-mode = no
    daemonize = yes
    slaveof 主的IP 主的端口

编辑完成之将主从全部启动,并验证

[root@localhost etc]# cp redis.conf /opt/redis_6380.conf
[root@localhost etc]# cp redis.conf /opt/redis_6381.conf
[root@localhost etc]# cp redis.conf /opt/redis_6382.conf
[root@localhost etc]# vim /opt/redis_6380.conf 
[root@localhost etc]# vim /opt/redis_6381.conf 
[root@localhost etc]# vim /opt/redis_6382.conf 
[root@localhost etc]# redis-server /opt/redis_6380.conf 
[root@localhost etc]# redis-server /opt/redis_6381.conf 
[root@localhost etc]# redis-server /opt/redis_6382.conf 
[root@localhost etc]# netstat -anput |grep redis
tcp        0      0 192.168.73.10:6379      0.0.0.0:*               LISTEN      12833/redis-server  
tcp        0      0 0.0.0.0:6380            0.0.0.0:*               LISTEN      13699/redis-server  
tcp        0      0 0.0.0.0:6381            0.0.0.0:*               LISTEN      13711/redis-server  
tcp        0      0 0.0.0.0:6382            0.0.0.0:*               LISTEN      13723/redis-server  
tcp        0      0 192.168.73.10:37065     192.168.73.10:6379      ESTABLISHED 13723/redis-server  
tcp        0      0 192.168.73.10:34195     192.168.73.10:6379      ESTABLISHED 13699/redis-server  
tcp        0      0 192.168.73.10:6379      192.168.73.10:37065     ESTABLISHED 12833/redis-server  
tcp        0      0 192.168.73.10:6379      192.168.73.10:34195     ESTABLISHED 12833/redis-server  
tcp        0      0 192.168.73.10:46341     192.168.73.10:6379      ESTABLISHED 13711/redis-server  
tcp        0      0 192.168.73.10:6379      192.168.73.10:46341     ESTABLISHED 12833/redis-server  
[root@localhost etc]# 

3、验证

使用redis-cli命令行登录redis服务器,输入role指令查看状态

[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6379
192.168.73.10:6379> role
1) "master"
2) (integer) 435
3) 1) 1) "192.168.73.10"2) "6380"3) "435"2) 1) "192.168.73.10"2) "6381"3) "435"3) 1) "192.168.73.10"2) "6382"3) "435"
192.168.73.10:6379> 

在master节点上,录入数据,在slave节点上查看到对应数据即可

master录入

192.168.73.10:6379> set hy hy
OK
192.168.73.10:6379> get hy
"hy"
192.168.73.10:6379> 

slave查看

[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6380
192.168.73.10:6380> get hy
"hy"
192.168.73.10:6380> exit
[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6381
192.168.73.10:6381> get hy
"hy"
192.168.73.10:6381> exit
[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6382
192.168.73.10:6382> get hy
"hy"
192.168.73.10:6382> 

验证成功


总结

在配置主从复制上大家要注意的是配置项的修改

master服务器需要改的地方:

bind  监听地址
port  端口
protected-mode = no
daemonize = yes

slave需要修改的是

bind  监听地址
port  6380
protected-mode = no
daemonize = yes
slaveof 192.168.115.160 6379

并且需要注意去监听端口。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将jar包部署到宝塔

尝试多种方式上传,但启动一直失败,这种方式亲测是好使的 项目内修改位置 在pom.xml文件中将mysql的scope改成provided,如果是固定的版本号会出现问题 之后就可以打包啦,直接点击maven中的package 找到打包文件的位置&#xff…

C语言 用数组名作函数参数

当用数组名作函数参数时,如果形参数组中各元素的值发生变化,实参数组元素的值随之变化。 1.数组元素做实参的情况: 如果已经定义一个函数,其原型为 void swap(int x,int y);假设函数的作用是将两个形参(x,y&#xf…

ChatGPT访问流量下降的原因分析

​自从OpenAI的ChatGPT于11月问世以来,这款聪明的人工智能聊天机器人就席卷了全世界,人们在试用该工具的同时也好奇该技术到底将如何改变我们的工作和生活。 但近期Similarweb表示,自去ChatGPT上线以来,该网站的访问量首次出现下…

基于springboot的课程作业管理系统【附开题|ppt|万字文档(LW)和搭建文档】

主要功能 学生登录: ①首页、个人中心:修改密码、个人信息管理等 ②公告信息管理、课程信息管理、学生选课管理、作业布置管理、作业提交管理、作业评分管理、课程评价管理、课程资源管理 教师登录: ①首页、个人中心:修改密码、…

代理模式:静态代理+JDK/CGLIB 动态代理

文章目录 1. 代理模式2. 静态代理3. 动态代理3.1. JDK 动态代理机制3.1.1. 介绍 3.1.2. JDK 动态代理类使用步骤3.1.3. 代码示例3.2. CGLIB 动态代理机制3.2.1. 介绍3.2.2. CGLIB 动态代理类使用步骤3.2.3. 代码示例 3.3. JDK 动态代理和 CGLIB 动态代理对比 4. 静态代理和动态…

mysql自增主键不连续情况分析

1.唯一键冲突 比如increnment_test中已经存在了co1为3的记录,当再插入col1为3的记录时,就会出现主键不唯一错误,但此时自增主键已经1,所以会发生主键不连续情况 DROP TABLE IF EXISTS increnment_test; CREATE TABLE increnment_test (id int(0) NOT NULL AUTO_INCREMENT,col…

DEVICENET转ETHERCAT网关连接西门子支持ethercat吗

你有没有遇到过生产管理系统中,设备之间的通讯问题?两个不同协议的设备进行通讯,是不是很麻烦?今天,我们为大家介绍一款神奇的产品,能够将不同协议的设备进行连接,让现场的数据交换不再困扰&…

【数字化处理】仿生假体控制中肌电信号的数字化处理研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

HTML5基础

1、HTML5概述 2014年10月28日,W3C(world wide web consortium,万维网联盟)的HTML工作组发布了HTML5的正式推荐标准。HTML5作为构建开放Web平台的核心,增加了支持Web应用的许多新特性,以及更符合开发者使用…

在win10上安装Docker desktop,并在docker中安装mysql

操作步骤: 安装docker 去 官网 下载安装软件;选择windows 2. 依次点击安装; 安装完成后无需登录,直接启动即可; 如果有提示需要更新wsl,执行以下命令更新: wsl --update wsl --status 查看状态 验证一下 适用命令:docker run hello-world 设置国内镜像 docker安装mysql…

WebDAV之π-Disk派盘 + CX文件管理器

CX文件管理器是一款好用的文件管理工具。它的功能非常的丰富,它能满足用户对文件管理的需求,而且功能也是一目了然,可以帮助用户快速的对文件进行操作。这款软件还支持SFTP、WebDAV、FTP等下载访问方式。手机和电脑在同一局域网下,可以使用FTP或派盘从你的电脑直接访问手机…

HDFS中的NAMENODE元数据管理(超详细)

元数据管理 元数据是什么元数据管理概述内存元数据元数据文件fsimage内存镜像文件edits log编辑日志 namenode加载元数据文件顺序 元数据管理相关目录文件元数据相关文件VERSIONseen_txid 元数据文件查看(OIV,OEV)SecondaryNameNode介绍checkpoint机制SN…

Tomcat线程池原理

1. 一个 SpringBoot 项目能同时处理多少请求?tomcat容器, 200 次。 2. 怎么来的? 而点击这些线程,查看其堆栈消息,可以看到 Tomcat、threads、ThreadPoolExecutor 等关键字 基于“短时间内有 200 个请求被立马处理…

pytorch求导

pytorch求导的初步认识 requires_grad tensor(data, dtypeNone, deviceNone, requires_gradFalse)requires_grad是torch.tensor类的一个属性。如果设置为True,它会告诉PyTorch跟踪对该张量的操作,允许在反向传播期间计算梯度。 x.requires_grad 判…

MATLAB的设置路径

在主页下的 或者在命令行输入path,命令行会出现所有路径 必须要将某些函数.m文件以及一些类文件包含在路径当中,否则在脚本代码中输入代码时,不会有代码提示

根据渲染数据长度动态渲染后缀图标

在动态获取数据时&#xff0c;想要渲染后面的图标是根据数据的长度渲染图标位置&#xff0c;效果如下&#xff1a; 代码如下&#xff1a; <el-row :gutter"60"><el-col :span"24"><el-form-item><el-input v-model.trim"form…

图的适配器

什么是图 图是一个由点的集合和边的集合所构成的数据结构。 图分为有向图和无向图。其中无向图也可以理解为有向图&#xff0c;所以可以认为所有的图都是有向图。 比方说&#xff0c;有这么一张图。其中a指向bc&#xff0c;b指向c&#xff0c;c指向p。边是带方向的&#xff0c;…

使用 RediSearch 在 Redis 中进行全文检索

原文链接&#xff1a; 使用 RediSearch 在 Redis 中进行全文检索 Redis 大家肯定都不陌生了&#xff0c;作为一种快速、高性能的键值存储数据库&#xff0c;广泛应用于缓存、队列、会话存储等方面。 然而&#xff0c;Redis 在原生状态下并不支持全文检索功能&#xff0c;这使…

FFmpeg常见命令行(三):FFmpeg转码

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》。本文是Android音视频任务列表的其中一个&#xff0c; 对应的要学习的内容是&#xff1a;如何使…

数学建模—多元线性回归分析(+lasso回归的操作)

第一部分&#xff1a;回归分析的介绍 定义&#xff1a;回归分析是数据分析中最基础也是最重要的分析工具&#xff0c;绝大多数的数据分析问题&#xff0c;都可以使用回归的思想来解决。回归分析的人数就是&#xff0c;通过研究自变量X和因变量Y的相关关系&#xff0c;尝试去解释…