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

docker搭建Redis三主三从

docker搭建Redis三主三从

  • 首先启动6个redis
  • 进入容器
  • 构建主从关系
  • 连接进入6381作为切入点,查看集群状态

首先启动6个redis

[root@docker redis-node-1]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6--net 172.168.000,000
[root@docker ~]# docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:latest --cluster-enabled yes --appendonly yes --port 6381
[root@docker ~]# docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:latest --cluster-enabled yes --appendonly yes --port 6382
[root@docker ~]# docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:latest --cluster-enabled yes --appendonly yes --port 6383
[root@docker ~]# docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:latest --cluster-enabled yes --appendonly yes --port 6384
[root@docker ~]# docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:latest --cluster-enabled yes --appendonly yes --port 6385
[root@docker ~]# docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:latest --cluster-enabled yes --appendonly yes --port 6386

进入容器

docker exec -it redis-node-1 /bin/bash

构建主从关系

//注意,进入docker容器后才能执行一下命令,且注意自己的真实ip地址,--cluster-replicas 1 表示为为每个master创建一个slave节点
redis-cli --cluster create 192.168.0.0:6381 192.168.0.0:6382 192.168.0.0:6383 192.168.0.0:6384 192.168.0.0:6385 192.168.0.0:6386 --cluster-replicas 1 

这个命令的含义是:

  • redis-cli:运行 Redis 命令行客户端。
  • --cluster create:以集群创建模式运行 Redis 命令行客户端。
  • `192.168.0.0:6381 192.168.0.0:6382 192.168.0.0:6383 192.168.0.0:6384 192.168.0.0:6385 192.168.0.0:6386:指定 Redis 集群的节点地址和端口,这里包括六个节点。
  • --cluster-replicas 1:指定每个主节点的复制品数量为 1,即每个主节点都有一个对应的从节点。

请确保在运行该命令之前已经启动了六个对应的 Redis 容器,并且这些容器处于可访问的状态。此外,还需要注意集群的配置和部署步骤,以确保正确设置 Redis 集群。

[root@docker share]# docker exec -it redis-node-1 /bin/bash
root@docker:/data# redis-cli --cluster create 1192.168.0.0:6381 192.168.0.0:6382 192.168.0.0:6383 192.168.0.0:6384 192.168.0.0:6385 192.168.0.0:6386 --cluster-replicas 1 
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168..0.0:6385 to 192.168.0.0:6381
Adding replica 192.168.0.0:6386 to 192.168.0.0:6382
Adding replica 192.168.0.0.:6384 to 192.168.0.0:6383
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: c4b154db9f9afaf5cbec7358c3f0ed2215f529 192.168.0.0:6381slots:[0-5460] (5461 slots) master
M: 2ce3e1eabd023d3a9e7206bb20b521741e4204 192.168.0.0:6382slots:[5461-10922] (5462 slots) master
M: e58d7f988509663440af1c29fcf9cf2211876 192.168.0.0:6383slots:[10923-16383] (5461 slots) master
S: 11a25d98c18861376d69064ea6ec6e40fae8d 192.168.0.0:6384replicates e58d7f988509440af1c2cf69fcf9cf2211876
S: 96565be50f438fd485c7073bd45a0e64d5f14227 192.168.0.0:6385replicates c4b154db9f9afacbec7355a8c3f0ed2215f529
S: 8c90df02c76fb3740455ac3bf9aa9171112c7e 192.168.0.0:6386replicates 2ce3e1eabd02a9e7206b6cb20b521741e4204
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node 192.168.0.0:6381)
M: c4b154db9f9afaf5cbec7353f0ed2215f529 192.168.0.0:6381slots:[0-5460] (5461 slots) master1 additional replica(s)
S: 8c90df02c76fb3740455ac3b7aa9171112c7e 192.168.0.0:6386slots: (0 slots) slavereplicates 2ce3e1eabd02a9e7206b6cb20b521741e4204
M: 2ce3e1eabd023d3a9e7206b20b521741e4204 192.168.0.0:6382slots:[5461-10922] (5462 slots) master1 additional replica(s)
M: e58d7f988509663440af1c2cf6f9cf2211876 192.168.0.0:6383slots:[10923-16383] (5461 slots) master1 additional replica(s)
S: 96565be50f438fd485c7073bd45a0e64d5f14227 192.168.0.0:6385slots: (0 slots) slavereplicates c4b154db9f9afafec7355a8c3f0ed2215f529
S: 11a25d98c18861376d69064b50ec6e40fae8d 192.168.0.0:6384slots: (0 slots) slavereplicates e58d7f909663440af1c2cf69fcf9cf2211876
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
root@docker:/data# 

连接进入6381作为切入点,查看集群状态

root@docker:/data# redis-cli -p 6381
127.0.0.1:6381> keys *
(empty array)
127.0.0.1:6381> cluster info
cluster_state:ok  //状态
cluster_slots_assigned:16384  //已经分配的槽位
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6   //已经知道的节点
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:221
cluster_stats_messages_pong_sent:237
cluster_stats_messages_sent:458
cluster_stats_messages_ping_received:232
cluster_stats_messages_pong_received:221
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:458
total_cluster_links_buffer_limit_exceeded:0
127.0.0.1:6381> cluster nodes
8c90df02c76fb3740455ac3bf9a9171112c7e 192.168.0.0:6386@16386 slave 2ce3e1eabd023d3a9e7206b6cb2021741e4204 0 1695704760496 2 connected
2ce3e1eabd023d3a9e7206b6cb201741e4204 192.168.0.0:6382@16382 master - 0 1695704762554 2 connected 5461-10922
c4b154db9f9afaf5cbec7355a8cd2215f529 192.168.0.0:6381@16381 myself,master - 0 1695704761000 1 connected 0-5460
e58d7f98850966344f1c2cf69fcf9cf2211876 192.168.0.0:6383@16383 master - 0 1695704761537 3 connected 10923-16383
96565be50f43885c7073bd45a0e64d5f14227 192.168.0.0:6385@16385 slave c4b154db9f9acbec7355a8c3f0ed2215f529 0 1695704762000 1 connected
11a25d98c18376d69064b50ea6ec6e40fae8d 192.168.0.0:6384@16384 slave e58d7f988509663440acf69fcf9cf2211876 0 1695704760000 3 connected
127.0.0.1:6381> 

相关文章:

docker搭建Redis三主三从

docker搭建Redis三主三从 首先启动6个redis进入容器构建主从关系连接进入6381作为切入点,查看集群状态 首先启动6个redis [rootdocker redis-node-1]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 …...

亚马逊要求的UL报告的产品标准是什么?如何区分

亚马逊为什么要求电子产品有UL检测报告? 首先,美国是一个对安全要求非常严格的国家,美国本土的所有电子产品生产企业早在很多年前就要求有相关安规检测。 其次,随着亚马逊在全球商业的战略地位不断提高,境外的电子设…...

如何在linux定时备份opengauss数据库(linux核心至少在GLIBC_2.34及以上)

前提环境,linux的核心至少在GLIBC_2.34及以上才能使用。 查看linux的glibc版本的命令如下 strings /lib64/libc.so.6 | grep GLIBC 如下图 或者用ldd --version 如下图 在官网下载对应的依赖包, 只需要这个lib文件即可,将这个包放在lin…...

SkyWalking快速上手(七)——Skywalking UI 界面简介

文章目录 前言1. 仪表盘1.1 指标展示1.2 自定义仪表盘 2. 拓扑图2.1 节点展示2.2 连接展示 3. 追踪3.1 请求链路3.2 请求详情 4. 性能剖析4.1 方法级别性能分析4.2 代码级别性能分析 5. 告警5.1 告警规则设置5.2 告警通知 6. 日志记录6.1 日志展示6.2日志分析6.3代码示例 总结 …...

python+vue驾校驾驶理论考试模拟系统

管理员的主要功能有: 1.管理员输入账户登陆后台 2.个人中心:管理员修改密码和账户信息 3.用户管理:管理员可以对用户信息进行添加,修改,删除,查询 4.添加选择题:管理员可以添加选择题目&#xf…...

go-redis 框架基本使用

文章目录 redis使用场景下载框架和连接redis1. 安装go-redis2. 连接redis 字符串操作有序集合操作流水线事务1. 普通事务2. Watch redis使用场景 缓存系统,减轻主数据库(MySQL)的压力。计数场景,比如微博、抖音中的关注数和粉丝数…...

java内嵌浏览器CEF-JAVA、jcef、java chrome

java内嵌浏览器CEF-JAVA、jcef、java chrome jcef是老牌cef的chrome内嵌方案,可以进行java-chrome-h5-桌面开发,下面为最新版本(2023年9月22日10:33:07) JCEF(Java Chromium Embedded Framework)是一个基于…...

string类模拟实现——C++

一、构造与析构 1.构造函数 构造函数需要尽可能将成员在初始化列表中初始化,string类的成员这里自定义的和顺序表相似,有_str , _size , _capacity , 以及一个静态成员 npos ,构造函数这里实现两种,一种是传参为常量字符串的&am…...

在 SQL Server 中,可以使用加号运算符(+)来拼接字符串。但是,如果需要拼接多个字符串或表中的字段,就需要使用内置的拼接函数了

以下是 SQL Server 中的一些内置拼接函数: 1. CONCAT:将两个或多个字符串拼接在一起。语法为: CONCAT (string1, string2, ...)示例: SELECT CONCAT(Hello, , World) as combined_string;输出结果为:Hello World&a…...

蓝桥杯每日一题2023.9.25

4406. 积木画 - AcWing题库 题目描述 分析 在完成此问题前可以先引入一个新的问题 291. 蒙德里安的梦想 - AcWing题库 我们发现16的二进制是 10000 15的二进制是1111 故刚好我们可以从0枚举到1 << n(相当于二的n次方的二进制表示&#xff09; 注&#xff1a;奇数个0…...

前端面试的话术集锦第 20 篇博文——高频考点(输入 URL 到页面渲染的整个流程)

这是记录前端面试的话术集锦第二十篇博文——高频考点(输入 URL 到页面渲染的整个流程),我会不断更新该博文。❗❗❗ 借用这道经典面试题,将之前学习到的浏览器以及网络几章节的知识联系起来。 首先是DNS查询,如果这一步做了智能DNS解析的话,会提供访问速度最快的IP地址…...

Android Jetpack Compose之确定重组范围并优化重组

目录 1.概述2.确定Composable重组的范围3.优化重组的性能3.1 Composable 位置索引3.2 通过Key添加索引信息3.3 使用注解Stable优化重组 1.概述 前面的文章提到Compose的重组是智能的&#xff0c;Composable函数在进行重组时会尽可能的跳过不必要的重组&#xff0c;只对需要变化…...

【JDK 8-集合框架进阶】6.1 parallelStream 并行流

一、parallelStream 并行流 1.1 串行 和 并行的区别 > 执行结果 二、问题 2.1 paralleStream 并行是否一定比 Stream 串行快? 2.2 是否可以都用并行&#xff1f; > 报错 三、实战 > 执行结果 四、总结 一、parallelStream 并行流 多线程并发处理&#xff…...

C语言中结构体,枚举,联合相关介绍

本次重点&#xff1a; 1、结构体 &#xff1a; &#xff08;1&#xff09;结构体类型的声明 &#xff08;2&#xff09;结构的自引用 &#xff08;3&#xff09;结构体变量的定义和初始化 &#xff08;4&#xff09;结构体内存对齐 &#xff08;5&#xff09;结构体传参 …...

【干货】GNSS连续运行基准站网

文章目录 01 ​概述02 基准站建设03 数据中心04 数据通信网络 01 ​概述 1. 基准站网的组成 卫星连续运行基准站网&#xff08;Continuously Operating Reference Stations&#xff0c;缩写 CORS&#xff09;是由若干连续运行基准站及数据中心、数据通信网络组成的&#xff0…...

如何使用iPhone15在办公室观看家里电脑上的4k电影,实现公网访问本地群晖!

如何使用iPhone15在办公室观看家里电脑上的4k电影&#xff1f; 文章目录 如何使用iPhone15在办公室观看家里电脑上的4k电影&#xff1f;1.使用环境要求&#xff1a;2.下载群晖videostation&#xff1a;3.公网访问本地群晖videostation中的电影&#xff1a;4.公网条件下使用电脑…...

LeetCode之26.删除有序数组中的重复项和80.删除有序数组中的重复项II(C++)

文章目录 0 引言1 删除有序数组中的重复项1.1 解题方法1.2 C代码 2 删除有序数组中的重复项II2.1 解题方法2.2 C代码 0 引言 本文主要记录如何解决LeetCode中数组和字符串类别中的26.删除有序数组中的重复项&#xff08;简单&#xff09;及80.删除有序数组中的重复项II &#…...

linux驱动之input子系统简述

文章目录 一、什么是input子系统二、内核代码三、代码分析 一、什么是input子系统 Input驱动程序是linux输入设备的驱动程序&#xff0c;我们最常见的就按键&#xff0c;触摸&#xff0c;插拔耳机这些。其中事件设备驱动程序是目前通用的驱动程序&#xff0c;可支持键盘、鼠标…...

嵌入式裸机架构的探索与崩塌

为什么会想着探索下嵌入式裸机的架构呢&#xff1f;是因为最近写了一个项目&#xff0c;项目开发接近尾声时&#xff0c;发现了一些问题&#xff1a; 1、项目中&#xff0c;驱动层和应用层掺杂在一起&#xff0c;虽然大部分是应用层调用驱动层&#xff0c;但是也存在驱动层调用…...

MySQL高级语句(第二部分)

MySQL高级语句(第二部分)一、视图表 create view1、视图表概述2、视图表能否修改&#xff1f;&#xff08;面试题&#xff09;3、基本语法3.1 创建3.2 查看3.3 删除 4、通过视图表求无交集值 二、case语句三、空值(null) 和 无值(’ ) 的区别四、正则表达式五、存储过程1、简介…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...