redis主从复制机器
1. 一个master支持多个slave
2. slave可以接受其他slave的连接,作为其他slave的master,从而形成一个master-slave的多级结构
3. 复制在master端是非阻塞的,也就是master在向client复制时可处理其他client的命令,而slave在第一次同步时是阻塞的
4. 复制被利用来提供可扩展性,比如可以将slave端用作数据冗余,也可以将耗时的命令(比如sort)发往某些slave从而避免master的阻塞,另外也可以用slave做持久化,这只需要将master的配置文件中的save指令注释掉。
client可以在一开始时作为slave连接master,也可以在运行后发布sync命令,从而跟master建立主从关系。
接下来我们分别从slave和master的视角概述下redis的主从复制的运行机制。
如果redis作为slave运行,则全局变量server.replstate的状态有REDIS_REPL_NONE(不处于复制状态)、 REDIS_REPL_CONNECT(需要跟master建立连接)、REDIS_REPL_CONNECTED(已跟master建立连接)三种。在读入slaveof配置或者发布slaveof命令后,server.replstate取值为REDIS_REPL_CONNECT,然后在syncWithMaster跟master执行第一次同步后,取值变为REDIS_REPL_CONNECTED。
如果redis作为master运行,则对应某个客户端连接的变量slave.replstate的状态有REDIS_REPL_WAIT_BGSAVE_START(等待bgsave运行)、REDIS_REPL_WAIT_BGSAVE_END(bgsave已dump db,该bulk传输了)、REDIS_REPL_SEND_BULK(正在bulk传输)、REDIS_REPL_ONLINE(已完成开始的bulk传输,以后只需发送更新了)。对于slave客户端(发布sync命令),一开始slave.replstate都处于REDIS_REPL_WAIT_BGSAVE_START状态(后面详解syncCommand函数),然后在后台dump db后(backgroundSaveDoneHandler函数),处于REDIS_REPL_WAIT_BGSAVE_END 状态,然后updateSlavesWaitingBgsave会将状态置为REDIS_REPL_SEND_BULK,并设置write事件的函数 sendBulkToSlave,在sendBulkToSlave运行后,状态就变为REDIS_REPL_ONLINE了,此后master会一直调用replicationFeedSlaves给处于REDIS_REPL_ONLINE状态的slave发送新命令。
1.在master机器上执行 info命令
这里链接的slaves是0个,
2.然后再slave机器上执行 slaveof masterid masterport ,这是master上只有12个kv值
3.然后再master再用info查看结果
已经链接了一个slave机器
4. 在master上写入一个新的值,然后查看slave机器,几乎同时在slave机器出现
在slave机器同时查看
- 大小: 89.4 KB
- 大小: 40.8 KB
- 大小: 94.8 KB
- 大小: 5.1 KB
- 大小: 41.2 KB
分享到:
相关推荐
redis学习总结分享,记录了redis整个学习过程总的知识点
Redis是一个开源的高性能键值存储数据库,它支持多种类型...而随着对Redis的进一步学习,例如学习其持久化机制、事务处理、发布订阅、Lua脚本以及Redis模块系统等,可以更深入地理解和应用这一强大的数据存储解决方案。
电脑语言Redis学习总结.pdf
### 实用手册:Redis全面总结 #### 一、Redis简介 **Redis**(Remote Dictionary Server)是一种开源的、高性能的键值(Key-Value)存储系统。它支持多种数据结构,如字符串(strings)、散列(hashes)、列表...
redis学习相关资料 redis命令 redis文档总结 Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash...
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它支持存储的 value 类型相对更多,包括 ...
Redis个人学习总结
学习Redis不仅需要掌握其基本操作和数据类型,还需要理解其持久化策略、复制机制以及如何在实际项目中合理使用。通过不断的实践和探索,开发者可以充分利用Redis的特性,提升应用程序的性能和功能。
* Fork 的时候,内存中的数据被克隆了一份,大致 2 倍的膨胀性需要考虑 AOF 持久化 AOF 持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。AOF 命令以 Redis 协议追加...
### Redis 学习与实战应用 #### 一、Redis 概述 Redis 是一款非常流行的非关系型(NoSQL)数据库。它不仅提供了快速的数据访问速度,还支持数据的持久化,使其成为许多应用场景下的首选。 ##### 1.1 NoSQL 数据库...
Redis_2.2.4学习总结.ppt
### Redis 学习笔记知识点概览 #### 一、Redis 概述与应用场景 ##### 1.1 NoSQL 数据库简介 - **定义**: NoSQL(Not Only SQL)泛指非关系型数据库,它们通常不使用传统的表格关系来存储数据。 - **特性**: NoSQL ...
Redis学习实战总结.md
在深入学习Redis的过程中,我们可以从NoSQL的基本概念、Redis的数据类型以及它们在实际应用中的使用场景来展开讨论。 1. **NoSql简单介绍** - NoSQL,即Not Only SQL,指的是非关系型数据库,它不采用传统的关系...
Redis基本操作,包括五种类型数据的设置,查找,删除等命令
Redis 是一款开源的、先进的键值存储系统,常被称为数据结构服务器。它支持多种数据结构,如字符串、哈希、列表、集合和有序集合,这使得Redis在处理互联网业务中的复杂数据类型时表现出色。与传统的关系型数据库...
在本压缩包中,你将找到一系列的Redis学习资料,涵盖了从基础到深入的多个方面,对于初学者来说是很好的学习资源。 首先,让我们了解一下Redis的基础知识。Redis是一个开源、基于内存的数据结构存储系统,它可以将...
Redis 入门学习教程与面试经验总结 Redis 是一种开源的、基于内存的数据结构存储系统,可以用作数据库、消息中间件、缓存等。下面是 Redis 的一些基本概念和技术要点: 1. Redis 的基本数据结构:字符串、列表、...
总结,Redis凭借其高效、灵活的特性,在数据库缓存领域扮演着重要角色。理解并熟练掌握Redis的使用,能显著提升系统的性能和稳定性。通过不断地实践和学习,我们可以更好地利用Redis解决实际问题,优化系统架构。