Redis Cluster主从模式详解
在软件的架构中,主从模式(Master-Slave)是使用较多的一种架构。主(Master)和从(Slave)分别部署在不同的服务器上,当主节点服务器写入数据时,同时也会将数据同步至从节点服务器,通常情况下,主节点负责写入数据,而从节点负责读取数据。
主从模式解析
主从模式的结构图如下:

如图所示,Redis 主机会一直将自己的数据复制给 Redis 从机,从而实现主从同步。在这个过程中,只有 master 主机可执行写命令,其他 salve 从机只能只能执行读命令,这种读写分离的模式可以大大减轻 Redis 主机的数据读取压力,从而提高了Redis 的效率,并同时提供了多个数据备份。主从模式是搭建 Redis Cluster 集群最简单的一种方式。
主从模式实现
Redis 提供了两种实现主从模式的方法,下面进行逐一介绍。为了方便演示,我们只从一台机器上搭建主从模式
1) 使用命令实现
使用命令在服务端搭建主从模式,其语法格式如下
redis-server --port <slave-port> --slaveof <master-ip> <master-port>
执行以下命令
#开启开启一个port为6300的从机,它依赖的主机port=6379
C:\Users\Administrator> redis-server --port 6300 --slaveof 127.0.0.1 6379
输出结果如下图:

接下来开启客户端,并执行查询命令,如下所示
C:\Users\Administrator>redis-cli -p 6300
127.0.0.1:6300> get name
"jack"
127.0.0.1:6300> get website
"www.biancheng.net"
#不能执行写命令
127.0.0.1:6300> set myname BangDe
(error) READONLY You can't write against a read only slave.
127.0.0.1:6300> keys *
1) "myset:__rand_int__"
2) "ID"
3) "title"
4) "course2"
5) "website"
6) "age"
7) "user:2"
8) "salary"
9) "mystream"
10) "key:__rand_int__"
11) "user:uv:2021011308"
....
注意:此时 port=6300 的服务端界面不能关闭。从上述命令可以看出,port =6300 的从机,完全备份了主机的数据,它可以执行查询命令,但是不能执行写入命令。
主从模式下,数据的同步是自动完成的,这个数据同步的过程,又称为全量复制
您也可以使用下面的命令来创建主从模式。启动一个服务端,并指定端口号
#指定端口号为63001,不要关闭
redis-server --port 63001
打开一个客户端,连接服务器,如下所示
#连接port=63001的服务器
C:\Users\Administrator>redis-cli -p 63001
#现在处于主机模式下,所以允许读写数据
127.0.0.1:63001> keys *
1) "FANS"
2) "user:login"
3) "course2"
...
127.0.0.1:63001> set myname 123456
OK
#将当前服务器设置成从服务器,从属于6379
127.0.0.1:63001> SLAVEOF 127.0.0.1 6379
OK
#写入命令执行失败
127.0.0.1:63001> SET mywebsite www.biancheng.net
(error) READONLY You can't write against a read only replica.
#再次切换为主机模式,执行下面命令
127.0.0.1:63001> SLAVEOF no one
OK
#写入成功
127.0.0.1:63001> SET mywebsite www.biancheng.net
OK
上述示例中,主要使用了两个命令,如下所示:
slaveof IP PORT #设置从服务器 slaveof no one #使服务器切换为独立主机
2) 修改配置文件实现
每个 Redis 服务器都有一个与其对应的配置文件,通过修改该配置文件也可以实现主从模式,下面在 Ubuntu 环境下对该方法进行演练
新建 redis_6302.conf 文件,并添加以下配置信息:
slaveof 127.0.0.1 6379 #指定主机的ip与port
port 6302 #指定从机的端口
启动 Redis 服务器,执行以下命令:
$ redis-server redis_6302.conf
客户端连接服务器,并进行简单测试。执行以下命令:
$ redis-cli -p 6302
127.0.0.1:6300> HSET user:username biangcheng
#写入失败
(error) READONLY You can't write against a read only slave.
提示:通过命令搭建主从模式,简单又快捷,所以不建议您使用修改配置文件的方法。
主从模式不足
主从模式并不完美,它也存在许多不足之处,下面做了简单地总结:
- 1) Redis 主从模式不具备自动容错和恢复功能,如果主节点宕机,Redis 集群将无法工作,此时需要人为干预,将从节点提升为主节点。
- 2) 如果主机宕机前有一部分数据未能及时同步到从机,即使切换主机后也会造成数据不一致的问题,从而降低了系统的可用性。
- 3) 因为只有一个主节点,所以其写入能力和存储能力都受到一定程度地限制。
- 4) 在进行数据全量同步时,若同步的数据量较大可能会造卡顿的现象。
相关文章:
Redis Cluster主从模式详解
在软件的架构中,主从模式(Master-Slave)是使用较多的一种架构。主(Master)和从(Slave)分别部署在不同的服务器上,当主节点服务器写入数据时,同时也会将数据同步至从节点服…...
Linux技能篇-非交互式修改密码
今天的文章没有格式,简单分享一个小技能,就是标题所说–非交互式修改密码。 一、普通方式修改用户密码 最普通的修改密码的命令就是passwd命令 [rootlocalhost ~]# passwd root Changing password for user root. New password: Retype new password:…...
记一次docker服务启动失败解决过程
环境:centos 7.6 报错:start request repeated too quickly for docker.service 由于服务器修复了内核漏洞,需要重启,没想到重启后,docker启动失败了 查看状态 systemctl status docker如下图 里面有一行提示&…...
npm ERR! node-sass@4.13.0 postinstall: `node scripts/build.js`
npm ERR! node-sass4.13.0 postinstall: node scripts/build.js npm config set sass_binary_sitehttps://npm.taobao.org/mirrors/node-sass npm install npm run dev Microsoft Windows [版本 10.0.19045.2965] (c) Microsoft Corporation。保留所有权利。C:\Users\Administr…...
Java定时任务 ScheduledThreadPoolExecutor
ScheduledThreadPoolExecutor 的创建 ScheduledThreadPoolExecutor executorService new ScheduledThreadPoolExecutor(1, // 核心线程数new BasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d") // 线程命名规则.daemon(true) // 设置线程为…...
Android Studio 显示build variants工具栏
工具栏: 如下图所示 依次点击View-->ToolWindows-->Build Variants。 在此记个笔记...
c++八股文记录
八股文 1.类和结构体的区别 在 C 中,类(class)和结构体(struct)在语法上几乎是相同的,唯一的区别是默认的访问权限。在结构体中,默认的访问权限是公有的(public)&#x…...
C++ 指针进阶:动态分配内存
工作原理 malloc 是 stdlib.h 库中的函数,声明为 void *__cdecl malloc(size_t _Size); 原理: malloc 函数沿空闲链表(位于内存 堆空间 中)申请一块满足需求的内存块,将所需大小的内存块分配给用户剩下的返回到链表上; 并返回指向该内存区的首地址的指针,意该指针的类型…...
点大商城V2.5.3分包小程序端+小程序上传提示限制分包制作教程
这几天很多播播资源会员反馈点大商城V2.5.3小程序端上传时提示大小超限,官方默认单个包都不能超过2M,总分包不能超20M。如下图提示超了93KB,如果出现超的不多情况下可采用手动删除一些images目录下不使用的图片,只要删除超过100KB…...
AUTOSAR汽车电子嵌入式编程精讲300篇-基于机器学习的车载 CAN 网络入侵检测
目录 前言 国内外研究现状 CAN 总线概述及其安全分析 2.1 CAN 总线相关概念 2.1.1...
Jetson orin(Ubuntu20.04)不接显示器无法输出VNC图像解决办法以及vnc安装记录
sudo apt install vino 好像Jetpack 5.0中已经自带了。。 配置VNC server: gsettings set org.gnome.Vino prompt-enabled false gsettings set org.gnome.Vino require-encryption false 编辑org.gnome,增加一个“enabled key”的参数: cd /usr/share/glib-2…...
LeetCode Hot100 108.将有序数组转为二叉搜索树
题目: 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 方法: class Solution {public…...
微机原理_3
一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案,请将选定的答案填涂在答题纸的相应位置上。) 在 8086 微机系统中,完成对指令译码操作功能的部件是()。 A. EU B. BIU C. SRAM D. DRAM 使计算机执行某…...
4.操作系统常见面试题(2)
3.4 虚拟内存 直接使⽤物理内存会产⽣⼀些问题 1. 内存空间利⽤率的问题:各个进程对内存的使⽤会导致内存碎⽚化,当要⽤ malloc 分配⼀块很⼤的内存空间时,可能会出现虽然有⾜够多的空闲物理内存,却没有⾜够⼤的连续空闲内存这种…...
springboot 开启和关闭kafka消费
关闭kafka自动消费 配置自定义容器工厂 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.kafka.config.C…...
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
密码,加密,解密 spring-security-crypto-5.7.3.jar /** Copyright 2002-2011 the original author or authors.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with t…...
系统安全测试要怎么做?
进行系统安全测试时,可以按照以下详细的步骤进行: 1、信息收集和分析: 收集系统的相关信息,包括架构、部署环境、使用的框架和技术等。 分析系统的安全需求、威胁模型和安全策略等文档。 2、威胁建模和风险评估: …...
Golang并发模型:Goroutine 与 Channel 初探
文章目录 goroutinegoexit() channel缓冲closerangeselect goroutine goroutine 是 Go 语言中的一种轻量级线程(lightweight thread),由 Go 运行时环境管理。与传统的线程相比,goroutine 的创建和销毁的开销很小,可以…...
批量添加PPT备注
我一直都觉得,用python高效办公,是件没必要的事。。。 但直到最近写课做PPT,做了80多页PPT,要把每一页PPT的备注粘贴进去时 我觉得,有什么关系呢,一页一页粘 但是粘到5页,我感觉ctlc\v频率有点儿…...
数据挖掘之PCA-主成分分析
PCA的用处:找出反应数据中最大变差的投影(就是拉的最开)。 在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的 但是什么时候信息保留的最多呢?具体一点&#…...
告别野路子!用STM32F407ZGT6标准库V1.9.0搭建工程模板的保姆级避坑指南
STM32F407标准库工程搭建实战:从零到编译成功的全流程精解 第一次接触STM32F407标准库的开发者,往往会在工程搭建环节耗费大量时间。网上零散的教程要么步骤不全,要么存在隐藏陷阱,导致新手在Keil配置、文件选择、宏定义等环节反复…...
BitNet b1.58-2B-4T新手入门:3步搭建你的第一个1.58-bit大模型应用
BitNet b1.58-2B-4T新手入门:3步搭建你的第一个1.58-bit大模型应用 1. 项目简介 BitNet b1.58-2B-4T是微软研究院推出的革命性1.58-bit量化大型语言模型,它将传统16-bit浮点权重压缩到仅使用-1、0、1三个值(平均1.58-bit)&#…...
从收藏废人到知识管理高手,就差这8个工具
🗂️你收藏的那500篇文章99%你不会再看第二次收藏 ≠ 学到 看过 ≠ 记住 信息管理才是真正的竞争力这8个工具,帮你把"收藏夹吃灰"变成真正属于自己的知识体系全部附网址知识管理必备🧠 2026必收藏我们这一代人,有一个…...
前端数据标注员的福音:快速生成定制化点阵/数码管图片数据集(Python+浏览器自动化)
前端数据标注员的福音:快速生成定制化点阵/数码管图片数据集(Python浏览器自动化) 在计算机视觉和OCR模型训练中,高质量的数据集是成功的关键。然而,获取特定风格的字符图像——尤其是点阵字体和LED七段数码管字体——…...
万象视界灵坛环境部署:NVIDIA Container Toolkit兼容性配置指南
万象视界灵坛环境部署:NVIDIA Container Toolkit兼容性配置指南 1. 平台概述 万象视界灵坛(Omni-Vision Sanctuary)是一款基于OpenAI CLIP技术的高级多模态智能感知平台。该平台通过创新的像素风格界面设计,将复杂的语义对齐过程转化为直观的交互体验。…...
LabVIEW波形图多层图像叠加
LabVIEW 的Plot Images属性支持在波形图、XY 图、数字波形图控件中,于绘图区域设置三层图像分层叠加展示,分别为 Front 顶层、Middle 中层、Back 底层。顶层图像会置于所有图表内容最上方,中层位于曲线与网格线之间,底层放置于网格…...
OpenAL32.dll文件丢失找不到怎么办?免费下载方法分享
在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…...
魔兽争霸3智能优化革命:一键解锁极致游戏体验
魔兽争霸3智能优化革命:一键解锁极致游戏体验 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏在现代硬件上表现不佳而烦恼吗…...
Claude 全系列模型选择指南:Opus / Sonnet / Haiku 怎么选
Anthropic 的 Claude 模型家族目前包含三个定位清晰的系列:Opus(旗舰)、Sonnet(均衡)、Haiku(轻量)。每个系列又有多个版本。本文从性能、价格、速度、场景四个维度,帮你做出最优选择…...
acbDecrypter技术解析:如何解密游戏音频文件的完整指南
acbDecrypter技术解析:如何解密游戏音频文件的完整指南 【免费下载链接】acbDecrypter 项目地址: https://gitcode.com/gh_mirrors/ac/acbDecrypter acbDecrypter是一款基于Python开发的专业游戏音频解密工具,专门用于处理ACB/AWB容器格式中的加…...
