一、什么是redis主从复制?

主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致;且实现Redis的主从复制非常简单。

二、redis主从复制特点

1、同一个Master可以拥有多个Slaves。

2、Master下的Slave还可以接受同一架构中其它slave的链接与同步请求,实现数据的级联复制,即Master->Slave->Slave模式;

3、Master以非阻塞的方式同步数据至slave,这将意味着Master会继续处理一个或多个slave的读写请求;

4、Slave端同步数据也可以修改为非阻塞是的方式,当slave在执行新的同步时,它仍可以用旧的数据信息来提供查询;否则,当slave与master失去联系时,slave会返回一个错误给客户端;

5、主从复制具有可扩展性,即多个slave专门提供只读查询与数据的冗余,Master端专门提供写操作;

6、通过配置禁用Master数据持久化机制,将其数据持久化操作交给Slaves完成,避免在Master中要有独立的进程来完成此操作。

三、redis主从复制原理

      当启动一个Slave进程后,它会向Master发送一个SYNC Command,请求同步连接。无论是第一次连接还是重新连接,Master都会启动一个后台进程,将数据快照保存到数据文件中,同时Master会记录所有修改数据的命令并缓存在数据文件中。后台进程完成缓存操作后,Master就发送数据文件给Slave,Slave端将数据文件保存到硬盘上,然后将其在加载到内存中,接着Master就会所有修改数据的操作,将其发送给Slave端。若Slave出现故障导致宕机,恢复正常后会自动重新连接,Master收到Slave的连接后,将其完整的数据文件发送给Slave,如果Mater同时收到多个Slave发来的同步请求,Master只会在后台启动一个进程保存数据文件,然后将其发送给所有的Slave,确保Slave正常。

四、服务器资源列表

五、配置过程

关于Redis的安装与配置这里便不操作,想了解的朋友请阅读:高性能数据库缓存之redis(一)http://cfwlxf.blog.51cto.com/3966339/1423106

3、1 Master端操作如下:

运行redis服务

[root@redis_master sh]# redis-server/etc/redis/redis.conf

查询redis运行日志

##通过阅读日志文件输出的一些信息,可以看出Master与Slave建立连接时,需要执行的会话机制:加载数据文件至硬盘,用时0.012秒,可想而知速度是多么的快,当然得依据数据的大小去评测;服务连接至6379端口,收到Slave同步连接请求,开启“BGSAVE”同步等;

清除Master端数据库中所有Key

[root@redis_master sh]# redis-cli
127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> keys *
(empty list or set)

3、2 Slave端操作如下:

[root@redis_slave ~]# vim/etc/redis/redis.conf

#添加Master端的IP与端口

# slaveof <masterip><masterport>
slaveof 192.168.8.8 6379

运行redis

[root@redis_slave ~]# redis-server/etc/redis/redis.conf

查询Slave运行日志

##分析redis日志,可以看出Slave与Master建立连接,数据同步的过程;如:发送SYNC命令,与Master端192.168.8.8:6379建立连接,然后Slave sync started;随后Master发送PING命令检查Slave的存活状态,复制被继续….

查询数据库中的所有key

[root@redis_slave ~]# redis-cli
127.0.0.1:6379> keys *
(empty list or set)

3、3 slave2端操作如下:

[root@redis_slave2 ~]# vim/etc/redis/redis.conf

#添加Slave端的IP与端口,实现级联复制;

# slaveof <masterip><masterport>
slaveof 192.168.8.10 6379

#运行redis服务

[root@redis_slave2 ~]# redis-server/etc/redis/redis.conf

查询redis运行日志

##结果与Slave1类似,只不过Slave2与Slave1(192.168.8.10:6379)建立连接,同步数据;MySQL的级联复制便是这样,Master->Slave1->Slave2;

#查询数据库的所有key

[root@redis_slave2 ~]# redis-cli

127.0.0.1:6379> keys *

(empty list or set)

3、4 master端操作如下:

[root@redis_master sh]# redis-cli
127.0.0.1:6379> MSET ID 1005 NAMEMariaDB City BeiJing
OK
127.0.0.1:6379> MGET ID NAME City
1) "1005"
2) "MariaDB"
3) "BeiJing"
127.0.0.1:6379> keys *
1) "NAME"
2) "ID"
3) "City"

3、5 客户端验证同步结果

slave1端验证

[root@redis_slave ~]# redis-cli
127.0.0.1:6379> auth !@#aedf
127.0.0.1:6379> keys *
1) "City"
2) "NAME"
3) "ID"
127.0.0.1:6379> MGET ID NAME City
1) "1005"
2) "MariaDB"
3) "BeiJing"

slave2端验证

[root@redis_slave2 ~]# redis-cli
127.0.0.1:6379> keys *
1) "ID"
2) "NAME"
3) "City"
127.0.0.1:6379> MGET ID NAME City
1) "1005"
2) "MariaDB"
3) "BeiJing"

四、Master write,Slave read机制

Redis的主从复制,通过程序实现数据的读写分离,让Master负责处理写请求,Slave负责处理读请求;通过扩展Slave处理更多的并发请求,减轻Master端的负载,如下图:

此图画得比较简易,展示了实现Redis读写分离的过程,通过判断用户读写请求,将write请求发送给Redis Master处理,Read请求发送给Redis Slave处理,文章中的不足之处,欢迎大家指点。

转载于:https://blog.51cto.com/cfwlxf/1433637

构建高性能数据库缓存之redis主从复制相关推荐

  1. 数据库缓存服务—Redis配置与优化

    文章目录 一.缓存概念 1.1 系统缓存 1.2 缓存保存位置及分层结构 1.2.1 DNS缓存 1.2.2 应用层缓存 1.2.3 数据层缓存 1.2.4 硬件缓存 二.关系型数据库与非关系型数据库 ...

  2. 缓存加速------Redis主从复制,哨兵模式,集群

    目录 前言 一.Redis主从复制 1.Redis主从复制概述 2.Redis主从复制作用 3.Redis主从复制流程 4.搭建Redis主从复制 ①环境准备 ②安装Redis ③修改Redis配置文 ...

  3. 数据库缓存服务器——Redis(入门级)

    目录 一.缓存服务器简介 1.NoSQL 2.NoSQL的优点/缺点 3.关系型数据库 二.Redis简介 1.redis软件获取和帮助 2.redis的特点 三.Redis部署 1.编译安装 2.y ...

  4. 5 数据库缓存机制 redis集群 --SoringBoot整合redis--及redis命令集

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件 1 上传安装包 2 解压Redis tar -xvf redis-5.0.4.tar.gz 3 安 ...

  5. 配置Redis主从复制

    [构建高性能数据库缓存之redis主从复制][http://database.51cto.com/art/201407/444555.htm] 一.什么是redis主从复制? 主从复制,当用户往Mas ...

  6. mysql redis缓存_mysql缓存 (redis)

    Mysq需要注意的地方: mysql主从复制 延迟来自于 sql线程(解决:myslq5.7 可设置成多线程并行) 数据库监控:lepus 大型数据库的删除(安全快速的方法 一部分一部分删除)(不推荐 ...

  7. php redis 传递闭包,通过缓存构建高性能 Laravel 应用

    通过缓存构建高性能 Laravel 应用 由 学院君 创建于3年前, 最后更新于 11个月前 版本号 #2 20678 views 9 likes 1 collects 配置 Laravel 为不同的 ...

  8. 第五阶段-第五阶段高性能分布式缓存Redis

    第五阶段 大型分布式系统缓存架构进阶 文章目录 第五阶段 大型分布式系统缓存架构进阶 第一部分 Redis 快速实战 第一节 缓存原理与设计 1.1 缓存基本思想 1.11 缓存的使用场景 1.12 ...

  9. 高性能分布式缓存redis(持久化原理 安全策略 过期删除内存淘汰策略 性能压测 高可用 Redis Cluster)

    redis redis(持久化原理 安全策略 过期删除&内存淘汰策略 性能压测 高可用 Redis Cluster) 1. 持久化原理 1.1 持久化流程(落盘) 1.2 RDB详解 1.2. ...

最新文章

  1. 在Ubuntu 14.04 64bit下编译安装rtmpdump并调试输出
  2. java 23种设计模式 深入理解
  3. 【复习资料】单片机与嵌入式系统原理及应用
  4. java中Robot
  5. 傅里叶变换和逆傅里叶变换numpy
  6. 二狗叫你制作千M网线的线序及方法
  7. javascript学习系列(2):数组中的filter方法
  8. php 其他页面获取session_PHP五十个提升执行效率的小技巧,和常见问题
  9. 简单又复杂的人工神经网络
  10. 投資效益計算公式4/10
  11. Linux内核分析学习心得
  12. springMVC的url重写
  13. 独立成分分析(Indenpendent Components Analysis)斯坦福公开课讲义
  14. origin游戏服务器引擎
  15. Matlab·Simulink的使用—【S函数的创建与应用】
  16. Java餐厅点餐系统【附源码报告】
  17. Python3实现批量下载百度搜索图片
  18. grunt源码解析1——如何安装grunt:grunt命令是怎样运行起来的
  19. 监控的4个黄金指标(google)
  20. 小米手机扩容教程_小米4 16g升级64g教程:小米4 16g扩张64g步骤

热门文章

  1. python做逻辑回归r2_利用python实现逻辑回归
  2. 一张纸厚度大约是什么_折叠103次,纸厚度就能超过宇宙直径?科学家解释让人如坠冰窖!...
  3. css3直线运动_纯css3实现曲线运动——贝塞尔曲线(cubic-bezier)
  4. sublime text3 sql 格式化
  5. VB:谁终结了我的程序
  6. EmEditor Pro 8.3简体中文绿色增强(无需安装)版
  7. 用成交量判断股价走势是否正常
  8. 学习小感之浅谈学习兴趣之路
  9. 腾讯自动驾驶新动作!与现代合作开发无人车系统
  10. 帮中国修长城前,英特尔还用AI追踪北极熊、保护鲸鱼