`

Redis 序列之三——Redis的M/S(主从机制)

阅读更多

一、M/S主从复制特征

                redis主从(M/S)复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。下面是关于redis主从复制的一些特点:   

                (1)master可以有多个slave;

                (2)一个slave可以接收其他slave的链接,即不仅仅能连接一个master所属的slaves,而且能连接到slave的slave,从而形成了“图”结构;

                (3)主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。 

                (4)主从复制可以用来提高系统的可伸缩性,我们可以用多个slave专门用于client的读请求,比如sort操作可以使用slave来处理,也可以用来做简单的数据冗余。

                (5)可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化。

 

二、M/S主从复制过程

             (1) Slave端在配置文件中添加了slave of指令,于是Slave启动时读取配置文件,初始状态为REDIS_REPL_CONNECT

      (2) Slave端在定时任务serverCron(Redis内部的定时器触发事件)中连接Master,发送sync命令,然后阻塞等待master发送回其内存快照文件(最新版的Redis已经不需要让Slave阻塞)

      (3) Master端收到sync命令简单判断是否有正在进行的内存快照子进程,没有则立即开始内存快照,有则等待其结束,当快照完成后会将该文件发送给Slave端;

      (4)Slave端接收Master发来的内存快照文件,保存到本地,待接收完成后,清空内存表,重新读取Master发来的内存快照文件,重建整个内存表数据结构,并最终状态置位为 REDIS_REPL_CONNECTED状态,Slave状态机流转完成;

      (5)Master端在发送快照文件过程中,接收的任何会改变数据集的命令都会暂时先保存在Slave网络连接的发送缓存队列里(list数据结构),待快照完成后,依次发给Slave,之后收到的命令相同处理,并将状态置位为 REDIS_REPL_ONLINE

 

三、M/S主从复制缺陷

            M/S主从复制是全量复制,不是增量复制,这样的话,当一台slave因为某种原因与master断开,那么当重新进行连接后,就需要重新获取整个内存快照,这样不仅恢复比较慢,而且还会给master带来压力。

 

四、M/S主从配置方式

            配置slave服务器很简单,只需要在slave的配置文件中加入如下配置:

            slaveof  192.168.1.1 6379  #指定master的ip和端口

 

分享到:
评论

相关推荐

    Redis部署笔记(单机+主从+哨兵+集群)

    基于Centos7系统,由浅入深讲解如何部署Redis的四种模式,分别是:单机模式、主从模式、哨兵模式、集群模式。 完整原文:http://exp-blog.com/2018/09/14/pid-2285/ 同时提供Jedis客户端封装源码: ● 屏蔽Jedis与...

    tomcat7+redis主从实现session共享相关jar包

    在实现Tomcat7与Redis的Session共享时,Jedis负责将Tomcat中的Session数据序列化并存储到Redis中,以及在需要时反序列化并返回给Tomcat。 其次,`commons-pool2-2.0.jar`是Apache Commons的一个组件,提供了对象池...

    c++ 操作redis数据库

    测试是确保软件质量的关键环节,对于C++与Redis的集成尤其重要,因为网络通信和数据序列化/反序列化都可能引入错误。 最后,`redisconnect.h`可能是一个头文件,定义了与Redis连接相关的类或结构体。在C++中,连接...

    redis-7.2.3.zip

    本次我们关注的是其Linux版本的最新发行版——redis-7.2.3.zip。这个压缩包包含了在Linux环境下运行Redis 7.2.3所需的所有文件。 Redis 7.2.3的更新可能包含性能优化、新功能的引入、bug修复以及对旧特性的改进。...

    redis-server:5.0.14.1 windows版本

    标题提到的是Redis的特定版本——5.0.14.1,专为Windows操作系统设计。这个版本的Redis是经过编译和配置,可以直接在Windows环境下运行的。 在描述中,我们看到这个压缩包提供了一个“解压即用”的版本,这意味着...

    redis-4.0.11 已编译版本

    在搭建Redis集群时,你需要至少三个节点(包括主节点和副本节点)来保证数据的高可用性。`redis-trib.rb`将帮助你完成这一过程,同时确保数据在节点间正确复制。集群的每个节点都需要运行`redis-server`,并通过`...

    redis_linux安装包.zip

    3. **主从复制**:Redis支持主从复制,通过复制,可以实现数据备份和负载均衡。 4. **事务**:Redis支持简单的原子性事务,允许在一个操作序列中执行多个命令。 5. **发布/订阅**:Redis提供发布/订阅模式,可以...

    shiro连接redis集群 根据org.crazycake.shiro包改造源码

    例如,原本的实现可能仅支持单个Redis实例,改造后可能实现了多节点的发现、读写操作的路由以及故障转移机制。 具体改造可能包括以下方面: 1. **RedisClient**:原有的Shiro Redis连接器可能使用了单一的Redis...

    redis-5.0.5.zip windows版本

    - Redis在Windows上可能遇到的兼容性和性能问题,如文件锁机制、线程池等,需要关注社区更新和解决方案。 - Windows服务的管理,除了`sc`命令,也可以通过`redis-server.exe --service-install`和`--service-...

    Redis-5.0.14.1+Another-Redis-Desktop-Manager.1.5.8 windows版

    3. **流(Streams)**:在5.0版本中,Redis引入了新的数据结构——Stream,它是一种日志数据结构,允许存储有序的时间序列数据,适用于实时分析和消息传递。 4. **Lua脚本增强**:Redis支持在服务器端执行Lua脚本,...

    Redis - Redis深度历险.pdf.zip

    3. **复制**:Redis支持主从复制,可以创建多个副本以提高可用性和读取性能。复制是异步的,允许数据在主服务器和从服务器之间进行延迟同步。 4. **事务**:Redis提供简单的事务支持,允许用户在一个操作序列中执行...

    阿里巴巴Redis使用规范

    "阿里巴巴Redis使用规范" 本文将详细介绍阿里巴巴28条Redis使用规范,涵盖了Redis性能优化、数据存储、安全、实例管理等方面的内容。 规范一:控制key的长度 为了避免Redis中的keys过长,阿里巴巴建议控制key的...

    ServiceStack.Redis-5.8无限制.zip

    2. **序列化支持**:为了方便.NET对象与Redis之间的数据交换,ServiceStack.Redis集成了多种序列化器,包括Json.NET、FastJson和protobuf等,允许开发者选择最适合其项目的序列化方式。 3. **连接池管理**:高效的...

    Redis学习指南 Redis学习手册

    三、Redis性能优化 1. 内存管理:理解Redis的数据结构和内存分配策略有助于优化内存使用,例如合理设置最大内存限制,避免内存碎片。 2. 配置调整:根据实际场景调整Redis配置,如适当增加客户端连接数,优化网络...

    redis-6.2.13.tar.gz

    Redis 是一个高性能的键值数据库,它以开源的方式提供服务,广泛应用于缓存、消息队列、数据存储等多个场景。Redis-6.2.13是Redis的一个稳定版本,提供了许多增强的功能和优化,旨在提高性能和稳定性。下面将详细...

    linux免安装 redis

    Redis支持简单的事务功能,允许在一个操作序列中执行多个命令,并保证它们的原子性。通过`MULTI`、`EXEC`命令可以开启和结束一个事务。 10. **Redis的发布订阅(Pub/Sub)**: Redis还提供了发布/订阅功能,允许...

    ServiceStack.Redis 3.9

    6. **序列化**:库内置了对多种序列化器的支持,包括Json.NET、protobuf等,这使得在Redis中存储和检索对象变得容易。 7. **高级功能**:如脚本(Lua Scripting)支持,可以执行预编译的Lua脚本来提高性能,以及...

    Redis 入门指南.pdf

    Redis 是一个开源的、高性能的键值存储系统,它被广泛应用于数据缓存、消息队列、数据库等多个领域。作为一款非关系型数据库,Redis 的优势在于其内存存储和高速读写性能,使得数据处理速度极快。本指南将帮助初学者...

    RedisStudio--redis界面查看工具

    7. **持久化与复制**:协助用户理解和配置Redis的持久化策略(如RDB和AOF)以及主从复制设置。 8. **性能监控**:提供基本的性能指标,如命令执行速率、内存使用情况等。 **安装与使用** 在提供的文件列表中,`...

    Redis 5.0.14 (a7c01ef4/0) 64 bit

    Redis 5.0.14 支持主从复制,可以创建多个从节点来备份主节点,提高数据安全性。此外,它还支持部分同步和流复制,使数据复制更加高效。 5. **Lua脚本**: Redis 支持在服务器端执行 Lua 脚本,允许用户定义复杂...

Global site tag (gtag.js) - Google Analytics