主从复制实现Redis集群

news2025/2/25 9:43:05

主从复制实现Redis集群实验 (一主二从):

实验环境: 使用Docker 搭建 Redis 版本 5.0.5

打开一个终端窗口,在其中运行如下命令创建一个名为redis-master的Redis容器。注意,它的端口是6379 (本地的端口:映射到容器的端口)

 docker run -itd--name redis-master -p 6379:6379 redis:5.0.5(冒号后可跟特定的版本号;不写的话, 默认latest,即最新的版本)

新开一个命令窗口,在其中运行如下命令创建一个名为redis·slave1的容器。注意,它的端口是6380。这里是在一台电脑端口号来区别一台主Redis容器和另外两台从Redis容器。在真实项目里,多台Redis会部署在不同的服务器上 可以通过命令来创建从服务器

 docker run -itd --name redis-slave1 -p 6380:6380 redis:5.0.5
 docker run -itd --name redis-slave2 -p 6381:6381 redis:5.0.5

查看redis-master容器的ip地址, 这里是172.17.0.2

 docker inspect my_redis | grep IPAddress

在真实项目里,Redis服务器所在的IP地址是固定的 而容器启动的Redis服务器的IP地址是动态的,所以这里用上述命令来获取IP地址 在redis-master容器的命令窗口里,分别运行命令,进入命令行窗口

 docker exec -it 容器id可以(头几个字母就行), names也可以(能唯一标识容器即可) /bin/bash
 exit # 这个命令用于退出容器

可以使用redis-cli命令进入Redis的客户端命令行

 redis-cli

redis-cli

因为还没有配置, 所以 显示的从节点连接数为0。

然后从服务器中, 可以到由于此时还没有通过命令行设置主从模式,因此输出结果里依然能看到当前服务器是“主服务器”,同时没有携带从服务器。在redis-slave1容器的命令窗口里运行如下的命令,指定当前Redis服务器为从服务器。该命令的格式是slaveof IP地址端口号

在从节点上执行下述指令, 使得与主节点建立关系

slaveof 172.17.0.2 6379

主从服务器建立关系主从服务器建立关系

操作后, 主节点的状态

一主二从

从节点的状态

二从

主从复制模式能达到的效果: 主节点写东西, 从节点能够读取到数据

主从节点

在项目里除了可以用slaveof命令搭建主从模式的集群外,还可以用配置参数的方式来搭建,具体的步骤如下: 搭建主服务器的命令不变,并且还是用6379端口

docker run -itd my_redis -p 6379:6379 redis:5.0.5
// 配置从节点的配置文件 如: cd /usr/server  vim redisSlave1.conf
port 6380
slaveof 172.12.0.2 6379

配置文件

修改完配置文件后, 启动容器时需要进行映射 (本地:容器里), 并在启动后读指定的配置文件 (docker logs 容器id -> 能看到报错信息)

docker run -itd --name redis-slave1 -v /usr/server/redisSlave1.conf:/redisConfig/
redisSlave1.conf -p 6380:6380 redis:5.0.5 redis-server /redisConfig/redisSlave1.conf

开启容器

因为修改了端口 (配置文件中已修改), 所以从节点在启动 redis-cli的时候需要指定端口号

redis-cli -h 127.0.0.1 -p 6380

从节点的redis-cli

默认从节点只能读, 不能写

从节点

可以在配置文件中增加一行, 从而使得从节点可读可写

slave-read-only no # 指定该服务器可读可写

还有一些配置 能控制主从节点复制的操作

// 主节点的配置
min-slaves-to-write 2
min-slaves-max-1ag 15

第1行的参数表示实现主从复制的从服务器个数最少是2台,第2行的参数表示如果由第1行参数指定的从服务器个数(这里是2台)的心跳延迟时间(lag值)大于15秒,就不执行主从复制。
这两个条件是“或者”的关系,即只要出现从服务器个数小于2,或者2台从服务器的心跳延迟时间大于15秒,主服务器即停止主从复制的操作 (控制主从复制)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【wails】(6):使用wails做桌面应用开发,使用gin+go-chatglm.cpp进行本地模型运行,在windows上运行成功

1,整体架构说明 主要使用,参考的开源项目是: https://github.com/wailsapp/wails 前端项目: https://github.com/Chanzhaoyu/chatgpt-web 运行模型: https://github.com/Weaxs/go-chatglm.cpp 参考代码: h…

【VSCode】SSH Remote 通过跳板机连开发机提示“bash行1 powershell未找到命令”

需求背景 因为需要,在家我需要挂上公司VPN然后SSH连到跳板机,然后再从跳板机SSH进开发机。 问题背景 跳板机进开发机输入完密码显示 bash行1 powershell未找到命令VSCode SSH Remote跳板机配置请自行搜素其他文章config配置 注意其中ssh.exe地址请根据…

消息中间件篇之RabbitMQ-延时队列

一、延时队列 延迟队列:进入队列的消息会被延迟消费的队列。 场景:超时订单、限时优惠、定时发布。 延迟队列死信交换机TTL(生存时间)。 二、死信交换机 当一个队列中的消息满足下列情况之一时,可以成为死信&#xf…

React Hooks概述及常用的React Hooks介绍

Hook可以让你在不编写class的情况下使用state以及其他React特性 useState ● useState就是一个Hook ● 通过在函数组件里调用它来给组件添加一些内部state,React会在重复渲染时保留这个state 纯函数组件没有状态,useState()用于设置和使用组件的状态属性。语法如下…

Yolov8有效涨点:YOLOv8-AM,添加多种注意力模块提高检测精度,含代码,超详细

前言 2023 年,Ultralytics 推出了最新版本的 YOLO 模型。注意力机制是提高模型性能最热门的方法之一。 本次介绍的是YOLOv8-AM,它将注意力机制融入到原始的YOLOv8架构中。具体来说,我们分别采用四个注意力模块:卷积块注意力模块…

【嵌入式——QT】SpinBox

QSpinBox用于整数的显示和输入,一般显示十进制数,也可以显示二进制、十六进制数,而且可以在显示框中增加前缀和后缀。QDoubleSpinBox用于浮点数的显示和输入,可以设置显示小数位数,也可以设置显示的前缀和后缀。 样式…

安装淘宝镜像cnpm报错

npm 安装淘宝镜像报错 npm install -g cnpm --registryhttps://registry.npm.taobao.org 安装报 The operation was rejected by your operating system. npm ERR! Its possible that the file was already in use (by a text editor or antivirus), npm ERR! or that you la…

CSS 入门手册(二)

目录 12-Overflow 13-下拉菜单 14-提示框 14.1 显示位置(左右) 14.2 显示位置(上下) 14.3 添加箭头 14.4 淡入效果 15-图片 16-列表 17-表格 17.1 表格宽度和高度 17.2 文字对齐 17.3 表格颜色 18-计数器 19-导航栏 19.1 导航栏UI优化 …

顺序表的列题(力扣)和旋转数组

文章目录 一.删除有序数组中的重复项(取自力扣) 二.合并两个有序数组(取自力扣) 三.旋转数组(多解法) 前言 见面我们说到了顺序表今天来分享几个有关于顺序表的题目 一.删除有序数组中的重复项&#xff…

【JavaSE】实用类——枚举类型、包装类、数学类

目录 Java API枚举优势代码示例 包装类作用包装类和基本数据类型的对应关系包装类的构造方法包装类的常用方法装箱和拆箱 留一个问题大家猜猜看包装类的特点 Math类Random类代码示例 Java API Java API(Java Application Programming Interface) 即Java应用程序编程接口&#…

MySQL-事务,properties文件解析,连接池

1.事务机制管理 1.1 Transaction事务机制管理 默认情况下是执行一条sql语句就保存一次,那么比如我们需要三条数据同时成功或同时失败就需要开启事务机制了。开启事务机制后执行过程中发生问题就会回滚到操作之前,相当于没有执行操作。 1.2 事务的特征 事…

【Python笔记-设计模式】责任链模式

一、说明 旨在将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。 (一) 解决问题 将请求的发送者和接受者解耦,并使请求随着处理对象链传递,优化系统内部处理逻辑 (二) 使…

springboot+vue前后端分离适配cas认证的跨域问题

0. cas服务搭建参考:CAS 5.3服务器搭建_cas-overlay-CSDN博客 1. 参照springsecurity适配cas的方式, 一直失败, 无奈关闭springssecurity认证 2. 后端服务适配cas: 参考前后端分离项目(springbootvue)接入单点登录cas_前后端分离做cas单点登录-CSDN博客 1) 引入maven依赖 …

shell的基本介绍

一. 什么是shell Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程 序设计语言。shell是解释执行的。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问…

[c 语言] 大端,小端;网络序,主机序

在网络编程中,特别是底层网卡驱动开发时,常常遇到字节序问题。字节序指的是多字节数据类型在内存中存放的顺序,高位保存在低地址还是高地址,以此来划分大端还是小端。 1 大端和小端 大端和小端指的是 cpu 的属性,常见…

视频如何无水印保存?这两个方法帮你一键保存

在互联网的浩瀚海洋中,我们时常会遇到那些令人心动、想要珍藏的视频。无论是教育资料、精彩瞬间,还是心仪的影片、综艺节目,我们都希望能够随时随地欣赏它们。然而,网络上的视频往往受到地域、平台、设备等多种限制,使…

数组指针。

数组指针:*先与数组名结合,后与方块结合。 指针数组:*先与方块结合。 int(*p)[5]和&arr的类型均为int(*)[5] &arr取出的是数组整个地址。&arr[0]与arr相同,是数组首地址。 一般在二维数组中使用数组指针 打印时要写…

StarRocks实战——多维分析场景与落地实践

目录 一、OLAP 系统历史背景 1.1 历史背景与痛点 1.2 组件诉求 二、StarRocks 的特点和优势 2.1 极致的查询性能 2.2 丰富的导入方式 2.3 StarRocks 的优势特点 三、多维分析的运用场景 3.1 实时计算场景 / 家长监控中心 3.2 实时更新模型选择 3.2.1 更新模型UNIQU…

动态规划的时间复杂度优化

作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 优化动态规划的时间复杂度,主要有如下几种: 一,不同的状态表示。 比如:n个人,m顶帽子。 第一种方式:dp[i][mask] ,i表示前i个人已经选择帽子&…

安防视频监控平台EasyNVR级联视频上云管理平台EasyNVS,出现报错“i/o deadline reached”该如何解决?

上云网关管理平台EasyNVS视频综合管理系统具备汇聚与管理EasyGBS、EasyNVR等平台的能力,系统可以将接入的视频资源实现视频能力统一输出,并能进行远程可视化运维等管理功能,还能解决设备现场没有固定公网IP却需要在公网直播的需求。 有用户反…