26.Redis主从架构

Redis主从架构

redis主从架构搭建,配置从节点步骤:

1、复制一份redis.conf文件
2、将相关配置修改为如下值:
port 6380
pidfile /var/run/redis_6380.pid # 把pid进程号写入pidfile配置的文件
logfile "6380.log"
dir /usr/local/redis‐5.0.3/data/6380 # 指定数据存放目录
3、配置主从复制
replicaof 192.168.0.1 6379 # 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveof
replica‐read‐only yes # 配置从节点只读
4、启动从节点
redis‐server redis.conf
5、连接从节点
redis‐cli ‐p 6380
6、测试在6379实例上写数据,6380实例是否能及时同步新修改数据
7、可以自己再配置一个6381的从节点

Redis主从工作原理

1.当为 master 配置了一个 slave 后,无论该 slave 是首次还是非首次连接上 Master,它都会向 Master 发送一个 PSYNC 命令来请求复制数据。

2.Master 在接收到 PSYNC 命令后,会于后台开展数据持久化工作,借助 bgsave 方式生成最新的 rdb 快照文件。

3.在持久化的过程中,Master 依然会继续接纳客户端的请求,并且会把那些有可能对数据集进行修改的请求暂存于内存之中。

4.一旦持久化操作完成,Master 就会将这份 rdb 文件数据集传送给 slave。

5.slave 在接收到数据后,会先将其进行持久化以生成 rdb,随后再加载到自身内存中。之后,Master 会把之前缓存在内存里的命令发送给 slave。

6.当 master 与 slave 之间的连接因某些缘由出现断开情况时,slave 拥有自动重新连接 Master 的功能。要是 Master 接收到了多个 slave 的并发连接请求,它只会进行一次数据持久化操作,并非针对每一个连接都分别进行一次,而后会把这一份持久化后的数据发送给所有并发连接的 slave。

数据部分复制

在 master 和 slave 断开重连后,通常情况下会对整份数据进行复制。然而,自 redis2.8 版本起,redis 开始采用能够支持部分数据复制的命令 PSYNC 来从 master 同步数据,这使得 slave 与 master 在网络连接断开重连后能够仅进行部分数据复制(实现断点续传)。

master 会在自身内存中构建一个用于复制数据的缓存队列,用于存储最近一段时间的数据。同时,master 和它所有的 slave 都维护着复制的数据下标 offset 以及 master 的进程 id。所以,当网络连接断开后,slave 会请求 master 继续尚未完成的复制,从所记录的数据下标处开始。倘若 master 进程 id 发生了变化,或者从节点数据下标 offset 过于陈旧,已经不在 master 的缓存队列中了,那么就会进行一次全量数据的复制。

倘若存在众多从节点,为了缓解主从复制风暴(即多个从节点同时复制主节点从而致使主节点压力过大的情况),可以采用如下架构,即让部分从节点与从节点(已与主节点同步的)同步数据。

Redis Lua脚本

Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行。使用脚本的好处如下:

1、减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器 上完成。使用脚本,减少了网络往返时延。这点跟管道类似。

2、原子操作:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。管道不是原子的,不过 redis的批量操作命令(类似mset)是原子的。

3、替代redis的事务功能:redis自带的事务功能很鸡肋,报错不支持回滚,而redis的lua脚本几乎实现了常规的事务功能,支持报错回滚操作,官方推荐如果要使用redis的事务功能可以用redis lua替代。 官网文档上有这样一段话:

从Redis2.6.0版本开始,通过内置的Lua解释器,可以使用EVAL命令对Lua脚本进行求值。EVAL命令的格 式如下:

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

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

相关文章

3D-IC——超越平面 SoC 芯片的前沿技术

“3D-IC”,顾名思义是“立体搭建的集成电路”,相比于传统平面SoC,3D-IC引入垂直堆叠芯片裸片(die)和使用硅通孔(TSV)等先进封装技术,再提高性能、降低功耗和增加集成度方面展现了巨大…

同世界,共北斗|遨游通讯亮相第三届北斗规模应用国际峰会!

10月24日,第三届北斗规模应用国际峰会在湖南省株洲市隆重开幕,此次峰会以“同世界,共北斗”为主题,旨在加速北斗系统的市场化进程、促进其产业化布局及国际化拓展。全国政协副主席、农工党中央常务副主席杨震讲话并宣布开幕&#…

window7虚拟机VMware与主机共享文件

文件管理器》计算机网络右键》属性》高级共享设置——全部启用 新建文件夹》右键》属性》共享》选择可以共享的用户——我这里选的是所有用户 点击高级共享》权限》保存设置——设置文件权限 文件管理器》计算机网络》右键》属性》————查看虚拟机计算机名称 主机访问 主机…

构建安全基石:网络安全等级保护定级指南

在数字化时代,网络安全已成为企业与个人不可忽视的重要课题。网络安全等级保护定级指南,作为国家指导网络安全保护的重要文件,为各类机构提供了精准的安全防护蓝图。本文旨在深度解析网络安全等级保护定级指南的精髓,助力建构全面…

HarmonyOS 5.0应用开发——Navigation实现页面路由

【高心星出品】 文章目录 Navigation实现页面路由完整的Navigation入口页面子页面 页面跳转路由拦截其他的 Navigation实现页面路由 Navigation:路由导航的根视图容器,一般作为页面(Entry)的根容器去使用,包括单页面&…

基于FPGA的以太网设计(五)

之前简单介绍并实现了ARP协议,今天简单介绍一下IP协议和ICMP协议。 1.IP协议 IP协议即Internet Protocol,是网络层的协议。 IP协议是TCP/IP协议族的核心协议,其主要包含两个方面: IP头部信息。IP头部信息出现在每个IP数据报中…

将 el-date-picker获取的时间数据转换成时间戳

在Vue.js中使用Element UI的el-date-picker组件时,你可以获取用户选择的日期并将其转换为时间戳。el-date-picker通常返回的是一个Date对象或一个格式化后的字符串(取决于你如何配置它)。下面是一个示例,展示了如何将el-date-pick…

Spring Cloud OAuth认证中心

在微服务架构中,由于不同的业务会拆分成不同的微服务,传统的单体项目一般是通过过滤器进行拦截校验,而微服务显然不可能分发到各个服务进行用户认证,这就需要由一个统一的地方来管理所有服务的认证信息,实现只登录一次…

松脂醇-落叶松脂素还原酶(pinoresinol-lariciresinol reductase, PLR)克隆与鉴定-文献精读71

菘蓝中松脂醇-落叶松脂素还原酶编码基因IiPLR2的克隆与功能分析 摘要 松脂醇-落叶松脂素还原酶(pinoresinol-lariciresinol reductase, PLR)是植物中木脂素生物合成的关键酶,能连续催化两步反应分别生成落叶松脂素和开环异落叶松脂素。落叶松脂素等木脂素类成分是…

Unity SpriteEditor 中的图集处理功能

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 因为unity不只能做3d,还有2d游戏需要大量编辑处理图片素材,所以需要了解Sprite(精灵&…

KPaaS 集成平台低代码在跨境电商行业的应用

在全球化的经济浪潮中,跨境电商行业蓬勃发展,机遇与挑战并存。随着业务规模的不断扩大和市场竞争的日益激烈,跨境电商企业面临着诸多复杂的业务管理和技术难题。KPaaS 业务集成扩展平台以其低代码的创新特性,为跨境电商行业带来了…

头歌——人工智能(机器学习 --- 决策树2)

文章目录 第5关:基尼系数代码 第6关:预剪枝与后剪枝代码 第7关:鸢尾花识别代码 第5关:基尼系数 基尼系数 在ID3算法中我们使用了信息增益来选择特征,信息增益大的优先选择。在C4.5算法中,采用了信息增益率…

银河麒麟相关

最近安装了银河麒麟server版本,整理下遇到的一些小问题 1、vmware安装Kylin-Server-V10-SP3-General-Release-2303-X86_64虚拟机完成后,桌面窗口很小,安装vmwaretools后解决,下载地址http://softwareupdate.vmware.com/cds/vmw-de…

leetcode-71-简化路径

题解: 1、以"/"作为分隔符对字符串进行分割得到数组names; 2、初始化一个栈stack(python中的栈使用列表实现); 3、遍历数组names;如果当前元素为".."且栈不为空,则将弹出栈顶元素&a…

网络安全行业10大副业汇总,总有一个适合你

网络安全行业这10大副业汇总 总有一个适合你 引言 在当今的网络安全行业中,除了全职工作外,许多师傅还通过副业来增加收入、不断拓展自身技能,并积累更多实际操作经验,为职业发展增添了无限可能。 本文提供了10种适合各种类型…

Android13关于获取外部存储文件的相关问题及解决方案记录

Android的学习路上... 测试设备:vivo X90s安卓版本: Android13开发环境:AndroidStudio FlamingoSDK:33 最近我在Android13的环境下尝试写一个文件选择器,以便日后的开发使用。但是我们知道,从Android13 (A…

django restful API

文章目录 项目地址一、django环境安装以及初识restful1.1 安装python 3.10的虚拟环境1.2 创建django工程文件1.3 创建一个book app1.4 序列化(Django JsonResponse)1.4.1创建一个Models1.4.2 创建django的超级用户admin1.4.3 添加serializers.py生成序列化器1.5 FBV创建视图1…

用docker Desktop 下载使用thingsboard/tb-gateway

1、因为正常的docker pull thingsboard/tb-gateway 国内不行了,所以需要其它工具来下载 2、在win下用powershell管理员下运行 docker search thingsboard/tb-gateway 可以访问到了 docker pull thingsboard/tb-gateway就可以下载了 3、docker Desktop就可以看到…

ComfyUI初体验

ComfyUI 我就不过多介绍了,安装和基础使用可以看下面大佬的视频,感觉自己靠图文描述的效果不一定好,大家看视频比较方便。 ComfyUI全球爆红,AI绘画进入“工作流时代”?做最好懂的Comfy UI入门教程:Stable D…

分布式ID生成策略

文章目录 分布式ID必要性1.UUID2.基于DB的自增主键方案3.数据库多主模式4.号段模式5.Redis6.Zookeeper7.ETCD8.雪花算法9.百度(Uidgenerator)10.美团(Leaf)11.滴滴(TinyID) 分布式ID必要性 业务量小于500W的时候单独一个mysql即可提供服务,再大点的时候就进行读写分…