redis高级----------主从复制
redis的四种模式:单例模式;主从模式;哨兵模式,集群模式
一、主从模式
单例模式虽然操作简单,但是不具备高可用
缺点:
- 单点的宕机引来的服务的灾难、数据丢失
- 单点服务器内存瓶颈,无法无限纵向扩容
解决办法:
单节点宕机,可以由其他节点暂时接替,宕机的慢慢排查,也就是主从模式

优点
有了主从,提高了Redis整体的可用性,当主节点(master)挂了,可以把从节点(slave)手动升级为主节点继续服务。
缺点master挂了整个Redis将失去写操作的能力,仅具备读操作,需要运维半夜爬起来手动升级,中间的请求失败数据丢失无法容忍。
解决办法可以有一种方式自动升级slave为master ------【哨兵模式】
1.1主从复制
从一台Redis服务器的数据(主节点master),复制到其他Redis服务器(从节点slave)。数据复制单向,只能由主节点到从节点,master可读可写,slave只可读不可写;默认每台Redis服务器都是主节点,从节点需要在配置文件中单独配置,才会从默认的主节点变成从节点。一个主节点可以有0个或多个从节点,但每个从节点只能有一个主节点。
2.1.1 复制原理
slave第一次连接master,一定会执行一次全量复制
全量复制数据量过大,会造成很大的网络开销,消耗CPU/内存/硬盘IO
增量复制用于处理在主从复制中因网络等数据丢失的场景,当slave再次连接上master,并且就是原来的master,如果条件允许,master补发数据给slave,补发数据量小,避免全量复制的开销(到底能不能复制还要看offset和buffer的情况)
如果slave再次连上的master是新选举的master,那么只能进行全量复制
早期的redis只有全量复制,增量复制是对全量复制的重大优化,尽量采用2.8以上版本
2.1.1.1 全量复制
- slave给master发一个sync同步命令
- master通过bgsave命令fork子进程,持久化生成RDB文件
- master通过网络将RDB文件传给slave
- slave清空老数据,载入新的RDB文件,此时slave阻塞,无法响应客户端,专心复制
2.1.1.2 增量复制
- 主从节点各自维护自己的复制偏移量offset,主节点写入命令时,offset=offset+命令字节长度;从节点收到主节点命令也会相应增加自己的offset,并同步给主节点。主节点同时维护自己的offset和从节点的offset,以此来判断主从节点数据是否一致。
- 主节点指令记录在本地buffer(缓冲区),异步将buffer同步给从节点
- 若网络不好,同步速度慢了,buffer满了就会从头开始覆盖前面的内容,于是无法增量复制,必须全量复制
# 主从原理
1. 副本库通过slaveof 127.0.0.1 6379命令,连接主库,并发送SYNC给主库
2. 主库收到SYNC,会立即触发BGSAVE,后台保存RDB,发送给副本库
3. 副本库接收后会应用RDB快照
4. 主库会陆续将中间产生的新的操作,保存并发送给副本库
5. 到此,我们主复制集就正常工作了
6. 再此以后,主库只要发生新的操作,都会以命令传播的形式自动发送给副本库.
7. 所有复制相关信息,从info信息中都可以查到.即使重启任何节点,他的主从关系依然都在.
8. 如果发生主从关系断开时,从库数据没有任何损坏,在下次重连之后,从库发送PSYNC给主库
9. 主库只会将从库缺失部分的数据同步给从库应用,达到快速恢复主从的目的# 主库是否要开启持久化(一般情况要开启)
如果不开有可能,主库重启操作,造成所有主从数据丢失!
2.2 读写分离
大部分情况都是读操作,将读操作放在从节点,写操作放在主节点,减缓服务器压力;同时一些执行耗时比较久的操作也可以放在一台从节点完成,例如keys、sort。(什么时候连主节点写,什么时候连从节点读,由客户端自己控制)
最低配:一主二从,当主节点宕机后,其中一个从节点升级为主节点,还能剩一个从节点。
2.3 主要作用
- 数据冗余:热备份,持久化另一种方式
- 故障恢复:master宕机,快速升级slave为master
- 读写分离:master写,slave,提高服务器负载能力,同时可以根据需求添加slave
- 负载均衡:配合读写分离,读多写少场景,多个slave分担负载,大大提高并发
- 高可用基石:是实现哨兵和集群的基础
二、主从的搭建具体操作
# 前置条件1 :至少需要两台机器--》在一台机器运行两个redis实例
# 前置条件2:辅助配置(主从数据一致性配置)
min-slaves-to-write 1
min-slaves-max-lag 3
#那么在从服务器的数量少于1个,或者三个从服务器的延迟(lag)值都大于或等于3秒时,主服务器将拒绝执行写命令# 方式一:
# 1 6380是从,6379是主
# 2 启动器两台实例
# 3 搭建主从关系-在从库上:slaveof ip portslaveof 127.0.0.1 6379# 4 断开主从关系-在从库上:slaveof no one# 方式二:配置文件方式
# 在从库的配置文件中:
slaveof 127.0.0.1 6379
slave-read-only yes# 使用info查看主从关系
相关文章:
redis高级----------主从复制
redis的四种模式:单例模式;主从模式;哨兵模式,集群模式 一、主从模式 单例模式虽然操作简单,但是不具备高可用 缺点: 单点的宕机引来的服务的灾难、数据丢失单点服务器内存瓶颈,无法无限纵向扩…...
posgresql通过PL/pgSQL脚本统一修改某字段大小写
项目在做postgresql数据库适配时遇到了某些问题,需要统一将某个模式含id字段的全部表,将id字段由小写转换为大写,可以通过PL/pgSQL脚本实现。 先确保当前用户有足够的权限 DO $$ DECLARE current_table text;current_column text; BEGIN --…...
iPhone卫星通信SOS功能如何在灾难中拯救生命
iPhone上的卫星紧急求救信号功能在从毛伊岛野火中拯救一家人方面发挥了至关重要的作用。这是越来越多的事件的一部分,在这些事件中,iPhone正在帮助人们摆脱危及生命的情况。 卫星提供商国际通信卫星组织负责移动的高级副总裁Mark Rasmussen在接受Lifewir…...
NOIP真题答案 过河 数的划分
过河 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点…...
图为科技-边缘计算在智慧医疗领域的作用
边缘计算在智慧医疗领域的作用 随着科技的进步,智慧医疗已成为医疗行业的重要发展趋势。边缘计算作为新兴技术,在智慧医疗领域发挥着越来越重要的作用。本文将介绍边缘计算在智慧医疗领域的应用及其优势,并探讨未来发展方向。 一、边缘计算…...
Linux配置nginx反向代理
在云服务器上部署高并发的服务,使用Nginx作为反向代理是一种常见的做法,可以实现流量分发、负载均衡,同时提升系统的可靠性和性能。 步骤概览: 安装Nginx: 确保服务器已安装Nginx。若未安装,可使用适用于你…...
随便记录记录
统一整理一下各种 pandas读csv import pandas as pd ## 默认会将第一行作为列 df pd.read_csv(path_to_your_file.csv) ## 传递 headerNone 参数来告诉 Pandas 不要将第一行 df pd.read_csv(path_to_your_file.csv, headerNone) ## 使用多种选项来处理数据,如指…...
UbuntuDDE 23.04发布,体验DeepinV23的一个新选择
UbuntuDDE 23.04发布,体验DeepinV23的一个新选择 昨晚网上搜索了一圈,无意看到邮箱一条新闻,UbuntuDDE 23.04发布了 因为前几天刚用虚拟机安装过,所以麻溜的从网站下载了ISO文件,安装上看看。本来没多想,…...
RabbitMQ 消费者
RabbitMQ的消费模式分两种:推模式和拉模式,推模式采用Basic.Consume进行消费,拉模式则是调用Basic.Get进行消费。 消费者通过订阅队列从RabbitMQ中获取消息进行消费,为避免消息丢失可采用消费确认机制 消费者 拉模式拉模式的实…...
软件测试面试真题 | 什么是PO设计模式?
面试官问:UI自动化测试中有使用过设计模式吗?了解什么是PO设计模式吗? 考察点 《page object 设计模式》:PageObject设计模式的设计思想、设计原则 《web自动化测试实战》:结合PageObject在真实项目中的实践与应用情…...
GB2312转UTF-8部分中文乱码
现象 最近写了个txt导入,客户反馈有时候导入的数据,会出现个别中文乱码的现象,但是我之前已经做过编码转换处理了,统一转成了UTF-8。 比如“鞠婧祎”,导入进来是这样: 排查思路 首先看了一下这个文本的编码格式&am…...
项目——电子词典(客户端、服务器交互,字典导入,单词查询)
一、项目要求 登录注册功能,不能重复登录,重复注册单词查询功能历史记录功能,存储单词,意思,以及查询时间基于TCP,支持多客户端连接采用数据库保存用户信息与历史记录将dict.txt的数据导入到数据库中保存。…...
jenkins 是什么?
一、jenkins 是什么? Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行&#…...
无涯教程-PHP - sql_regcase()函数
sql_regcase() - 语法 string sql_regcase (string string) 可以将sql_regcase()函数视为实用程序函数,它将输入参数字符串中的每个字符转换为包含两个字符的带括号的表达式。 sql_regcase() - 返回值 返回带括号的表达式字符串以及转换后的字符。 sql_regcase…...
cesium 实现鼠标中键拖动地图
cesium默认左键拖动地图,中键旋转,再绘图时带来诸多不便。所以改成鼠标中键按下拖动地图,鼠标左键选点。代码如下:【感谢chatGPT】 //改为中建拖动// 假设 viewer 是你的 Cesium Viewer 实例const cameraController viewer.scene…...
低压风机单片机方案
低压风机通常由电机、转子、机壳、进气管、出气管、齿轮和减速机等组成。电机带动转子旋转,旋转的转子带动齿轮和减速机转动,进而形成空气被吸入转子内部,通过旋转而产生的离心力把气体压缩,并将气体排出。 低压风机方案的主控型…...
R语言06-R语言的基本运算
概念 R语言支持多种基本运算,包括算术运算、逻辑运算、比较运算和向量化运算等。 代码示意 逻辑运算 a <- TRUE b <- FALSElogical_and <- a & b # 逻辑与 logical_or <- a | b # 逻辑或 logical_not <- !a # 逻辑非比较运算 x <…...
Docker容器:docker-compose管理创建LNMP服务并运行Wordpress网站平台
文章目录 一.项目环境1. 环境描述2.项目需求 二.部署过程1.安装Docker2.安装Docker加速器3.Docker-Compose安装部署4.准备依赖文件、配置nginx5.配置mysql6.配置php7.编写docker-compose.yml8.验证 三.容器快照,然后将Docker镜像打包成tar包备…...
实业兴国 守护种源 —— 白露木實®农业的活力之风
高科技领域,芯片是生命线;而在农业领域,种源与芯片在高科技领域的重要性是相同的。保护、发展、培育我国的种质资源,是中国农业发展至为关键的一环。但是,因为思想、观念、认识、技术等方面的原因,让我们错…...
Web3.0
一、Web3.0是什么 Web3.0(有时称为“分布式Web”或“去中心化Web”)是对互联网的下一代演进的概念。它代表了一种更加分散、去中心化和用户掌控的互联网模式,与传统的Web2.0模型有很大不同。 以下是Web3.0的一些关键特征和概念:…...
抖音无水印下载神器:3分钟实现高效批量下载的完整指南
抖音无水印下载神器:3分钟实现高效批量下载的完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppo…...
大模型上手指南:从跑通到解剖,一步步深入核心机制!
本文提供了一套从零开始、由浅入深的实践路径,指导读者如何系统性地分析和学习大模型。首先通过配置环境、加载本地模型并成功进行推理,让读者直观感受模型运行。接着,结合运行结果回顾 Transformer、Tokenization 等核心概念,并探…...
对比直接使用厂商API,Taotoken在路由容灾上的体验差异
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商API,Taotoken在路由容灾上的体验差异 1. 引言:服务稳定性的现实挑战 在将大模型能力集成…...
5大核心功能:让旧iOS设备重获新生的终极工具指南
5大核心功能:让旧iOS设备重获新生的终极工具指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit 你是否…...
AI浏览器扩展实战:从原理到应用,提升网页AI体验
1. 项目概述与核心价值如果你和我一样,每天花大量时间在浏览器里和各类AI工具打交道,那你肯定也遇到过这些烦心事:在亚马逊上挑个商品,想问问AI哪个型号更划算,得手动复制粘贴商品信息到另一个聊天窗口;用C…...
Ask your GIT:AI驱动的代码仓库智能助手,一键解析与安装
1. 项目概述:一个为开发者“减负”的智能代码助手在GitHub、GitLab或者Bitbucket上发现一个看起来很有潜力的开源项目,是每个开发者的日常。但随之而来的,往往是长达十几甚至几十分钟的“阅读理解”时间:你得先通读冗长的README&a…...
VESC驱动无刷电机入门避坑:从看不懂ChibiOS源码到5分钟搞定CAN通讯
VESC驱动无刷电机入门避坑:从看不懂ChibiOS源码到5分钟搞定CAN通讯 第一次接触VESC驱动无刷电机时,面对满屏的ChibiOS源码和复杂的CAN通讯协议,很多嵌入式新手都会感到无从下手。特别是当你已经能用VESC Tool让电机转起来,但想通过…...
AI命令行自动执行工具:从剪贴板监听、内容过滤到终端注入的实现原理
1. 项目概述:一个让Claude“粘贴”命令行的效率工具如果你经常和Claude这类AI助手对话,并且需要处理命令行操作,那你一定遇到过这个痛点:Claude给出的代码片段、配置命令或者文件路径,你需要手动复制、切换窗口、粘贴到…...
性价比高可代理的油烟分离油烟机的厂家
最近跟10多个开厨电店的老板喝茶,一半人唉声叹气:去年赚的钱全压库存里了,3个做了十几年的老老板说,再找不到好产品,今年打算把店转了。为啥好好的店做成这样?说白了就是选品选错了,风口变了&am…...
Unity项目瘦身实战:彻底搞懂Library文件夹,轻松清理几十个G的缓存
Unity项目瘦身实战:彻底搞懂Library文件夹,轻松清理几十个G的缓存 当你打开资源管理器,发现Unity项目的Library文件夹已经吞噬了50GB磁盘空间时,那种窒息感就像发现衣柜里塞满了十年没穿过的旧衣服。这个隐藏在项目根目录下的&quo…...
