构建高性能数据库缓存之redis主从复制
一、什么是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主从复制相关推荐
- 数据库缓存服务—Redis配置与优化
文章目录 一.缓存概念 1.1 系统缓存 1.2 缓存保存位置及分层结构 1.2.1 DNS缓存 1.2.2 应用层缓存 1.2.3 数据层缓存 1.2.4 硬件缓存 二.关系型数据库与非关系型数据库 ...
- 缓存加速------Redis主从复制,哨兵模式,集群
目录 前言 一.Redis主从复制 1.Redis主从复制概述 2.Redis主从复制作用 3.Redis主从复制流程 4.搭建Redis主从复制 ①环境准备 ②安装Redis ③修改Redis配置文 ...
- 数据库缓存服务器——Redis(入门级)
目录 一.缓存服务器简介 1.NoSQL 2.NoSQL的优点/缺点 3.关系型数据库 二.Redis简介 1.redis软件获取和帮助 2.redis的特点 三.Redis部署 1.编译安装 2.y ...
- 5 数据库缓存机制 redis集群 --SoringBoot整合redis--及redis命令集
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件 1 上传安装包 2 解压Redis tar -xvf redis-5.0.4.tar.gz 3 安 ...
- 配置Redis主从复制
[构建高性能数据库缓存之redis主从复制][http://database.51cto.com/art/201407/444555.htm] 一.什么是redis主从复制? 主从复制,当用户往Mas ...
- mysql redis缓存_mysql缓存 (redis)
Mysq需要注意的地方: mysql主从复制 延迟来自于 sql线程(解决:myslq5.7 可设置成多线程并行) 数据库监控:lepus 大型数据库的删除(安全快速的方法 一部分一部分删除)(不推荐 ...
- php redis 传递闭包,通过缓存构建高性能 Laravel 应用
通过缓存构建高性能 Laravel 应用 由 学院君 创建于3年前, 最后更新于 11个月前 版本号 #2 20678 views 9 likes 1 collects 配置 Laravel 为不同的 ...
- 第五阶段-第五阶段高性能分布式缓存Redis
第五阶段 大型分布式系统缓存架构进阶 文章目录 第五阶段 大型分布式系统缓存架构进阶 第一部分 Redis 快速实战 第一节 缓存原理与设计 1.1 缓存基本思想 1.11 缓存的使用场景 1.12 ...
- 高性能分布式缓存redis(持久化原理 安全策略 过期删除内存淘汰策略 性能压测 高可用 Redis Cluster)
redis redis(持久化原理 安全策略 过期删除&内存淘汰策略 性能压测 高可用 Redis Cluster) 1. 持久化原理 1.1 持久化流程(落盘) 1.2 RDB详解 1.2. ...
最新文章
- 在Ubuntu 14.04 64bit下编译安装rtmpdump并调试输出
- java 23种设计模式 深入理解
- 【复习资料】单片机与嵌入式系统原理及应用
- java中Robot
- 傅里叶变换和逆傅里叶变换numpy
- 二狗叫你制作千M网线的线序及方法
- javascript学习系列(2):数组中的filter方法
- php 其他页面获取session_PHP五十个提升执行效率的小技巧,和常见问题
- 简单又复杂的人工神经网络
- 投資效益計算公式4/10
- Linux内核分析学习心得
- springMVC的url重写
- 独立成分分析(Indenpendent Components Analysis)斯坦福公开课讲义
- origin游戏服务器引擎
- Matlab·Simulink的使用—【S函数的创建与应用】
- Java餐厅点餐系统【附源码报告】
- Python3实现批量下载百度搜索图片
- grunt源码解析1——如何安装grunt:grunt命令是怎样运行起来的
- 监控的4个黄金指标(google)
- 小米手机扩容教程_小米4 16g升级64g教程:小米4 16g扩张64g步骤
热门文章
- python做逻辑回归r2_利用python实现逻辑回归
- 一张纸厚度大约是什么_折叠103次,纸厚度就能超过宇宙直径?科学家解释让人如坠冰窖!...
- css3直线运动_纯css3实现曲线运动——贝塞尔曲线(cubic-bezier)
- sublime text3 sql 格式化
- VB:谁终结了我的程序
- EmEditor Pro 8.3简体中文绿色增强(无需安装)版
- 用成交量判断股价走势是否正常
- 学习小感之浅谈学习兴趣之路
- 腾讯自动驾驶新动作!与现代合作开发无人车系统
- 帮中国修长城前,英特尔还用AI追踪北极熊、保护鲸鱼