Redis | 主从模式

Redis | 主从模式

1. 简介

Redis主从模式(Replication)是Redis提供的一种数据备份和高可用性解决方案。通过主从复制,可以将一个Redis服务器的数据复制到其他多个从服务器,从而实现数据的备份和读写分离,提高系统的性能和可用性。

主从模式的工作原理如下:

  1. 主节点(Master):主节点是主要的数据写入节点,负责接收客户端的写入操作(写操作包括SET、INCR等),并将写入的数据同步到从节点。
  2. 从节点(Slave):从节点负责复制主节点的数据。它接收主节点发送过来的写操作命令,并执行相同的写操作,以保持数据的一致性。
  3. 数据同步:主节点会将写操作的命令发送给所有连接的从节点,从节点执行相同的写操作,从而保持数据同步。
  4. 只读操作:客户端的只读操作(例如GET等)可以由从节点处理,从而减轻主节点的压力,提高读取性能。

主从模式的优势在于数据备份和读写分离:

  • 数据备份:通过复制数据到从节点,即使主节点发生故障,数据仍然可用,并且可以通过从节点恢复数据。
  • 读写分离:通过从节点处理只读操作,可以减轻主节点的负担,提高读取性能。

2. 配置

2.1. 配置主节点

注意:不配置默认也是主节点

启动参数方式

在主节点的redis-server执行程序启动时添加--replicaof no one启动参数,表示当前节点为主节点。

redis-server --replicaof no one

配置文件方式

在主节点的redis.conf文件中设置replicaof选项为no one,表示当前节点为主节点。

replicaof no one

2.2. 配置从节点

启动参数方式

在主节点的redis-server执行程序启动时添加--replicaof <master_ip> <master_port>启动参数,设置当前节点的主节点。

如果主节点有密码还需要添加--masterauth <master_password>

配置文件方式

在从节点的redis.conf文件中设置replicaof选项为主节点的地址和端口。

replicaof <master_ip> <master_port>

如果主节点有密码还需要添加masterauthredis.conf

masterauth <master_password>

3. 演示

docker-compose.yaml

version: "3.8"
services:redis1:container_name: redis1image: redis:7.0command:- redis-server- --requirepass 123456- --bind * -::*redis2:container_name: redis2image: redis:7.0command:- redis-server- --requirepass 123456- --bind * -::*- --masterauth 123456- --replicaof redis1 6379depends_on:- redis1redis3:container_name: redis3image: redis:7.0command:- redis-server- --requirepass 123456- --bind * -::*- --masterauth 123456- --replicaof redis1 6379depends_on:- redis1
  1. 进入窗口控制台:docker exec -it redis1 bash

  2. 控制台内部操作:

    root@1c0cccc0d756:/data# redis-cli
    127.0.0.1:6379> AUTH 123456
    OK
    127.0.0.1:6379> INFO replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=172.18.0.3,port=6379,state=online,offset=1694,lag=0
    slave1:ip=172.18.0.4,port=6379,state=online,offset=1694,lag=0
    master_failover_state:no-failover
    master_replid:0158f9bf36c9db3b95829e29139fa71b1ecd2b84
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:1694
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:1694
    

4. 注意

主从复制是异步的,从节点可能会有一定的延迟。如果主节点故障,可以将一个从节点提升为主节点,继续提供服务。但在进行主从切换时,需要考虑数据一致性和可能丢失的写操作。

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

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

相关文章

一位年薪40W的测试被开除,回怼的一番话,令人沉思

一位年薪40W测试工程师被开除回怼道&#xff1a;“反正我有技术&#xff0c;在哪不一样” 一技傍身&#xff0c;万事不愁&#xff0c;当我们掌握了一技之长后&#xff0c;在职场上说话就硬气了许多&#xff0c;不用担心被炒&#xff0c;反过来还可以炒了老板&#xff0c;这一点…

git clone 报错Filename too long

1.使用git clone代码&#xff0c;爆出Filename too long错误 2.原因分析 因为我很少看git clone日志&#xff0c;所以从未想过是clone异常&#xff0c;而且也看到代码clone下来了&#xff0c;所以我就显然以为代码clone成功&#xff0c;但是使用idea打开代码后发现大量代码无法…

【数据结构和算法】排序算法

说明&#xff1a;以下排序如无特别说明&#xff0c;都是从小到大升序排序 1. 冒泡排序 核心思想&#xff1a;每个元素与其相邻元素比较&#xff0c;如果前者大于后者则交换&#xff0c;每次循环结束后会将最大值放到最后&#xff0c;像小水泡从底下冒到上面成大水泡一样&…

【RL】Wasserstein距离-GAN背后的直觉

一、说明 在本文中&#xff0c;我们将阅读有关Wasserstein GANs的信息。具体来说&#xff0c;我们将关注以下内容&#xff1a;i&#xff09;什么是瓦瑟斯坦距离&#xff1f;&#xff0c;ii&#xff09;为什么要使用它&#xff1f;iii&#xff09; 我们如何使用它来训练 GAN&…

【Django】招聘面试管理01 创建项目运行项目

文章目录 前言一、创建项目二、运行项目三、访问后台管理页面四、配置项总结 前言 跟着视频学一学&#xff0c;记录一下。 一、创建项目 照着步骤创建虚拟环境&#xff0c;安装Django等依赖包&#xff0c;创建项目&#xff1a;【Django学习】01 项目创建、结构及命令 > d…

C字符串与C++ string 类:用法万字详解(上)

目录 引言 一、C语言字符串 1.1 创建 C 字符串 1.2 字符串长度 1.3 字符串拼接 1.4 比较字符串 1.5 复制字符串 二、C字符串string类 2.1 解释 2.2 string构造函数 2.2.1 string() 默认构造函数 2.2.2 string(const char* s) 从 C 风格字符串构造 2.2.3 string(co…

pytorch Stream 多流处理

CUD Stream https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#c-language-extensions 中指出在kenel的调用函数中最后一个可选参数表示该核函数处在哪个流之中。 - 参数Dg用于定义整个grid的维度和尺寸&#xff0c;即一个grid有多少个block。为dim3类型。…

无涯教程-Perl - foreach 语句函数

foreach 循环遍历列表值&#xff0c;并将控制变量(var)依次设置为列表的每个元素- foreach - 语法 Perl编程语言中的 foreach 循环的语法是- foreach var (list) { ... } foreach - 流程图 foreach - 示例 #!/usr/local/bin/perllist(2, 20, 30, 40, 50);# foreach loop ex…

React 18 state 如同一张快照

参考文章 state 如同一张快照 也许 state 变量看起来和一般的可读写的 JavaScript 变量类似。但 state 在其表现出的特性上更像是一张快照。设置它不会更改已有的 state 变量&#xff0c;但会触发重新渲染。 设置 state 会触发渲染 可能会认为用户界面会直接对点击之类的用…

【微信小程序创作之路】- 小程序远程数据请求、获取个人信息

【微信小程序创作之路】- 小程序远程数据请求、获取个人信息 第七章 小程序远程数据请求、获取个人信息 文章目录 【微信小程序创作之路】- 小程序远程数据请求、获取个人信息前言一、远程数据请求1.本地环境2.正式域名 二、获取用户个人信息1.展示当前用户的身份信息2.获取用…

Ubuntu安装docker

安装 要是之前安装过&#xff0c;可以进行卸载然后再安装&#xff0c;旧版本的 Docker 的名称为docker、docker.io或 docker-engine。安装新版本之前卸载任何此类旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc使用存储库安装 在新主机上首次安…

kafka-保证数据不重复-生产者开启幂等性和事务的作用?

1. 生产者开启幂等性为什么能去重&#xff1f; 1.1 场景 适用于消息在写入到服务器日志后&#xff0c;由于网络故障&#xff0c;生产者没有及时收到服务端的ACK消息&#xff0c;生产者误以为消息没有持久化到服务端&#xff0c;导致生产者重复发送该消息&#xff0c;造成了消…

runit-docker中管理多个服务

runit-docker中管理多个服务 介绍Runit, systemctl和supervisor是三种不同的服务管理工具区别runit优点程序构成快速开始runit实现服务退出执行指定操作runit监管服务打印日志到syslogrunit监管服务后台运行runit监管服务一些错误总结 介绍 runit 是一个轻量级的、稳定的、跨平…

【error 踩坑】AttributeError: ‘DataFrame‘ object has no attribute ‘iteritems‘

新建了虚拟环境py38,安装pandas pip install pandas接着使用spark向hive表中写数据 发现出现了error: AttributeError: DataFrame object has no attribute iteritemsgoogle后找到答案&#xff1a; Looks like iteritems was removed in pandas 2.0 - try using pandas versi…

Golang交叉编译

Golang交叉编译主要依赖几个参数&#xff1a;GOOS、GOARCH和CGO_ENABLED。 参数作用GOOS交叉编译的OSGOARCH交叉编译的CPU架构CGO_ENABLED设置为0时&#xff0c;编译出的二进制是静态的&#xff0c;也就是说没有外部的依赖。 编译在arm64的linux环境运行的程序&#xff1a; …

econml双机器学习实现连续干预和预测

连续干预 在这个示例中&#xff0c;我们使用LinearDML模型&#xff0c;使用随机森林回归模型来估计因果效应。我们首先模拟数据&#xff0c;然后模型&#xff0c;并使用方法来effect创建不同干预值下的效应&#xff08;Conditional Average Treatment Effect&#xff0c;CATE&…

【深度学习MOT videos detect】Detect to Track and Track to Detect

论文&#xff1a;https://arxiv.org/abs/1710.03958 代码&#xff1a;https://github.com/feichtenhofer/Detect-Track 文章目录 Abstract1. Introduction2. Related work后面翻译略 Abstract 近期用于在视频中高精度检测和跟踪目标类别的方法越来越复杂&#xff0c;每年都变得…

【Express.js】使用zod检验

使用zod检验 上一节我们介绍了 express-validator&#xff0c;本节我们介绍一个更通用的检验工具 Zod What’s Zod.js? 写前端的同学可能知道Zod&#xff0c;我们在提交表单前需要对数据初步检查&#xff0c;Zod是一个很棒的工具。前端可以偷懒&#xff0c;但后端不能偷懒&…

Camunda 7.x 系列【10】使用 Java API 运行流程实例

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 前言2. 运行流程实例2.1 查询流程定义2.2 启动流程2.3 任务查询2.4 审批3. 数据表1. 前言…

vue3—SCSS的安装、配置与使用

SCSS 安装 使用npm安装scss&#xff1a; npm install sass sass-loader --save-dev 配置 配置到全局 &#x1f31f;附赠代码&#x1f31f; css: {preprocessorOptions: {scss: {additionalData:import "./src/Function/Easy_I_Function/Echarts/ToSeeEcharts/utill.…