网站试运营,精神文明网站建设内容,湛江商城网站开发设计,电子商务网站建设php目录
前言
七、事务管理
7.1事务中的异常处理
八、订阅发布
8.1概述
8.2.Redis针对发布订阅相关指令
九、主从复制
9.1主从复制概述
9.2.主从复制的用处
9.3主从复制实现原理
9.3.1.psync指令
9.3.2.复制偏移量
9.3.3复制积压缓冲区节点ID 前言
今天… 目录
前言
七、事务管理
7.1事务中的异常处理
八、订阅发布
8.1概述
8.2.Redis针对发布订阅相关指令
九、主从复制
9.1主从复制概述
9.2.主从复制的用处
9.3主从复制实现原理
9.3.1.psync指令
9.3.2.复制偏移量
9.3.3复制积压缓冲区节点ID 前言
今天接着分享redis本次分享的主要是事务管理、订阅发布和主从复制。 七、事务管理
事务的本质其实就是一组命令的集合。一个事务中的所有命令都会按照命令的顺序去
执行而中间不会被其他命令加塞。 7.1事务中的异常处理 命令语法错误。针对语法错误会导致整个事务执行被中断 运行操作错误针对执行中的异常只会导致该条指令的执行失败而不会影响事务中其他的指令。
八、订阅发布
8.1概述 如果熟悉消息中间件那么对发布订阅一定不陌生。发布者Publish一条消息消息发送 到Channel通道中然后所有订阅了这个通道的订阅者Subscriber都会接收到这条消息。 如下图所示 8.2.Redis针对发布订阅相关指令 九、主从复制
9.1主从复制概述 主从复制是指将一台Redis服务器的数据复制到其他的Redis服务器。前者称为主节点 Master/Leader后者称为从节点Slave/Follower数据是从主节点复制到从节 点的。其中主节点负责写数据当然有读的权限从节点负责读数据它没有写数 据的权限。默认的配置下每个Redis都是主节点。 一个主节点可以有多个从节点但是一个从节点只能有一个主节点即主从节点是1对N的关系。 9.2.主从复制的用处 数据冗余。主从复制实现了数据的备份实际上提供了数据冗余的实现方式。故障恢复。当主节点出现异常时可以由从节点提供服务实现快速的故障恢复实际上提供了服务冗余的实现方式。负载均衡。在主从复制的基础上配合读写分离可以由主节点提供写服务由从节点提供读服务分担服务器的负载在写少读多的业务场景下通过多个从节点分担读负载可以大大提高Redis服务器是并发量。高可用。哨兵配合主从复制可以是实现Redis集群的高可用。 9.3主从复制实现原理 Redis的主从复制可以分为两个阶段sync阶段和command propagate阶段。当从节点启 动后会发送sync指令给主节点要求全量同步数据此为sync阶段那么如果后续 Master节点接收到新的增删改操作也需要Slave节点接收同步的更新这就是command propagate阶段 9.3.1.psync指令 当主从节点都正在运行的时候出现了网络抖动造成连接断开那么当网络恢复两个 节点再次建立起连接的时候。从节点发送sync指令后主节点依然需要重新生成RDB并 对从节点进行全量数据的同步造成。那么这中间的耗时是非常严重的并且传输备份文件 也会对网络带宽造成很大的消耗。那么为了解决这个问题从Redis 2.8开始引入了psync指令来代替sync指令。psync指令会根据不同的情况来确定执行全量重同步还是部分重同步。 全量重同步。当从节点是第一次与主节点建立连接的时候那么就会执行全量重同步这个同步过程与上面我们介绍的sync阶段command propagate阶段一样。部分重同步。从节点的复制偏移量无法在复制积压缓冲区中找相应待同步的数据 并且 主节点与从节点不是第一次同步根据Redis节点ID判断 9.3.2.复制偏移量 Master节点和Slave节点都保存着一份复制偏移量。当Master节点每次向Slave节点发送n 字节数据的时候就会在Master节点偏移量加上n而Slave节点每次接收到n个字节的 时候也会在Slave节点偏移量上加n。在命令传播阶段Slave节点会定期的发送心跳 REPLCONF ACK{offset}指令这里的offset就是Slave节点的offset。当Master节点接 收到这个心跳指令后会对比自己的offset和命令里的offset如果发现有数据丢失那 么Master节点就会推送丢失的那段数据给Slave节点。如下图所示 9.3.3复制积压缓冲区节点ID
什么是复制积压缓冲区 复制积压缓冲区是由主节点维护的一个固定长度默认1MB的队列。它存储了每个字 节值与对应的复制偏移量。因为复制积压缓冲区的大小是固定的所以它保存的是主节点近 期执行的写命令。当从节点将offset发送给主节点后主节点便会根据offset与复制积压缓 冲区的大小来决定是否可以使用部分重同步。如果offset之后的数据仍然在复制积压缓冲区 内则执行部分重同步否则还是执行全量重同步。 节点ID Redis节点服务启动之后就会产生一个用来唯一标识Redis节点的ID。当Master节点与 Salve节点进行第一次连接同步的时候Master节点会将ID发送给Slave节点Slave节点接收 到会对其进行保存。那么当主从服务之间发生了中断重连的时候Slave服务器会将这个ID 发送给Master服务器Master服务器会拿自己的ID进行对比如果相同则说明主从之前是 连接过的。否则则说明是第一次建立的连接。那么就需要全量去同步数据了。