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

redis(五)——管道、主从复制

管道

Redis管道是一种网络优化技术,允许客户端一次性发送多个命令到服务器,然后一次性接收所有响应,而不是每个命令都等待响应。主要就是解决执行一个命令需要建立一次链接,如何发送到redis服务器执行,执行完后再返回客户端,返回后客户端才能再执行下一条命令,这样的时间就太长了,管道就是通过一次性向redis服务器推送多个命令,然后命令全部执行完再返回客户端,解决了中间来回往返等待的时间RTT。

那和事务有什么区别?

层面

事务(Transaction)

管道(Pipeline)

服务器支持

✅ 有MULTI/EXEC等命令

无专门命令

实现位置

服务端+客户端

纯客户端实现

技术本质

Redis协议功能

网络优化技术

最大的区别就是,事务multi在服务器端是有专门的事务队列的,可以保证全部执行/全部不执行的原子性(不能全部成功/全部失败的原子性),而管道是在客户端开辟的一个命令队列,客户端使用exec命令会一次性发给redis服务器,这个中途是可以被其他客户端的命令插队的,事务是必须队列里的命令全部执行完才允许其他客户端的命令执行的。

那和原生mset,mget批量有什么区别?

区别也是差不多的,mset,mget都是一次命令,其他客户端命令是要等待这个命令执行完的,而管道就不是。

主从复制

这个其实也和mysql的主从复制差不多,都是读写分离,主机负责写,从机负责读。我们先来看相关的配置

配置项

默认值

作用

使用场景

示例

🔐 基本配置

slaveof <ip> <port>

设置主节点地址和端口(新版本叫REPLICAOF <ip> <port>

从节点配置

slaveof 192.168.1.100 6379

masterauth <password>

连接主节点的密码

主节点有密码时

masterauth redis123

slave-read-only

yes

从节点是否只读

防止从节点数据修改

slave-read-only yes

replica-announce-ip

从节点对外公布的IP

NAT网络环境

replica-announce-ip 1.2.3.4

⚙️ 性能优化

repl-backlog-size

1mb

复制积压缓冲区大小

优化部分重同步

repl-backlog-size 1gb

repl-backlog-ttl

3600

主节点下线后缓冲区保留时间(秒)

故障恢复

repl-backlog-ttl 7200

repl-timeout

60

复制超时时间(秒)

网络不稳定环境

repl-timeout 120

repl-ping-slave-period

10

从节点ping主节点间隔(秒)

心跳检测

repl-ping-slave-period 10

repl-diskless-sync

no

是否使用无盘复制

网络带宽好时

repl-diskless-sync yes

repl-diskless-sync-delay

5

无盘复制前等待时间(秒)

等待更多从节点

repl-diskless-sync-delay 5

🛡️ 安全配置

requirepass

Redis实例密码

安全认证

requirepass redis123

masterauth

连接主节点的密码

主从认证

masterauth master123

slave-serve-stale-data

yes

主节点宕机时是否提供旧数据

高可用性

slave-serve-stale-data yes

slave-priority

100

哨兵模式下的优先级

故障转移

slave-priority 50

📊 监控调试

repl-disable-tcp-nodelay

no

是否禁用TCP_NODELAY

网络优化

repl-disable-tcp-nodelay no

min-slaves-to-write

0

最少从节点数才接受写操作

数据安全

min-slaves-to-write 1

min-slaves-max-lag

10

从节点最大延迟(秒)

数据一致性

min-slaves-max-lag 10

最重要的其实就是以下几个配置或者命令

slaveof <ip> <port>或者replicaof <ip> <port>

这个可以是命令也可以是配置写到配置文件中,这个就是确定谁是主机,使用命令的话可以更换配置中的主角,但是如果重启服务还是会从配置文件中读取配置,上次的命令是不会保存到配置文件中的。如果使用命令更改主机会清除当前的数据,重新拷贝新主机的数据。

SLAVEOF NO ONE 或者REPLICAOF NO ONE

这个命令是自己不再是从机了,造反自立山头变成主机了

info replication

这个命令是查看当前的主从复制信息的具体内容如下:

# 主节点输出示例
127.0.0.1:6379> INFO replication
# Replication
role:master   #角色主机
connected_slaves:2   #俩从机lag表示延迟秒数
slave0:ip=192.168.1.101,port=6380,state=online,offset=1098,lag=0
slave1:ip=192.168.1.102,port=6381,state=online,offset=1098,lag=1
master_repl_offset:1098
repl_backlog_active:1 #积压缓冲区是否激活,1表示激活
repl_backlog_size:1048576 #缓存区大小
repl_backlog_first_byte_offset:1 #缓存区起始偏移量
repl_backlog_histlen:1098 #缓冲区历史长度

主从复制的一些问题,

1个是主机挂了,从机还是从机不会自动上位的,这个期间数据不会丢失可以读但是不能写,从机只能读,不然不就乱套了,他会一直等待主机重新在线。

2是如果有三台redis机器,A是主机,B是A的从机,C是B的从机,那么不管A是否在线B都是不能执行写操作的,只是这种链式架构可以减轻A主机的压力。

总结的重点就是主机才可以写,从机只能读,除非当主机SLAVEOF NO ONE。

流程和缺点

流程

从机只要启动就会等待主机上线,第一次链接到主机后就会清空本地数据,然后全量复制主机的数据,主机在接到从机的链接请求后会立刻生成当前最新的RDB文件,在保存RDB文件的的时候会把客户端的命令缓存(当主机还是会执行的,因为RDB是后台进程,是上一个时刻的快照)然后一起把RDB文件和缓存的命令发到从机进行复制。然后主机会持续给从机发送心跳(repl-ping-replica-period 10默认10秒),如果从机没回复就会发现从机挂了,如果定期主机没发心跳那么超时就是主机挂了。

然后就是增量复制阶段了,主机持续把修改的命令传递到从机。如果从机下线了再上线,那么master会检查backlog里面的offset偏移量,master和slave都会保存一个复制的offset还有一个masterld,offset是保存在backlog中的。 Master只会把已经复制的offset后面的数据复制给Slave,类似浙点续传。

缺点

缺点很明显,一个就是延迟,尤其是一主多从的情况下,延迟会越来越高,一方面对主机的性能压力比较大,另一方面是向上面说的ABC主机情况延迟会越来越严重。

其次就是从机只能读,主机只要一挂就必须人为干预了,不能自己选一个老大出来,这个也是是否让人老火的,那怎么办看主包下期吧。

总结

主要讲的就是管道和主从复制。

http://www.dtcms.com/a/609499.html

相关文章:

  • OBS直播教程:OBS实时字幕插件如何下载?OBS实时字幕插件如何安装?OBS实时字幕插件如何使用?OBS实时字幕插件官方下载地址
  • WPF中TemplatePart机制详解
  • 大学生毕业设计课题做网站网站开发研发设计
  • PPT制作正在发生一场静默革命
  • 无线通信信道的衰落特性
  • 大模型量化压缩实战:从FP16到INT4的生产级精度保持之路
  • ListDLLs Handle 学习笔记(8.11):谁注入了 DLL?谁占着文件不放?一篇教你全搞定
  • 电子电气架构 ---软件架构的准则与描述
  • linux下网站搭建wordpress文章页图片尺寸
  • 上海集团网站建设公司好蚌埠的网站建设
  • opencv 学习: QA_01 什么是图像锐化
  • C++标准库中的排序算法
  • 做网站图片和文字字体侵权seo是什么意思金融
  • Node.js npm 安装过程中 EBUSY 错误的分析与解决方案
  • 科普:华为星闪是什么?华为星闪(英文名 NearLink)是国际星闪无线短距通信联盟发布的新型无线短距通信标准技术。
  • 数据结构6:排序
  • 解决 npm 依赖版本冲突:从 “unable to resolve dependency tree“ 到依赖管理高手
  • Ubuntu 使用 Python 启动 HTTP 服务
  • day14(11.14)——leetcode面试经典150
  • PyTorch实战(10)——从零开始实现GPT模型
  • 东莞商城网站建设哪里比较好电脑手机网站建设
  • django测试缓存命令的解读
  • Databend SQL 存储过程使用指南
  • Arbess从初级到进阶(7) - 使用Arbess+GitLab实现PHP项目自动化部署
  • Copilot、Codeium 软件开发领域的代表性工具背后的技术
  • 深度学习(4)—— Pytorch快速上手!从零搭建神经网络
  • 解码大地的预警 —— VR地震起因及先兆学习系统
  • 陇南市武都区住房和城乡建设网站威海网站制作团队
  • 网站下载小说营销型网站制作服务商
  • K8s的配置存储与实战