Redis主从复制(读写分离)
主从复制(读写分离):
读在从库读,写在主库写。
主从复制的好处:
避免redis单点故障
构建读写分离架构,满足读多写少的需求。
主从架构:
操作(启动实例,在一台机器上启动不同的实例,进行伪主从复制):
1.复制配置文件,修改配置文件,启动6379,6380,6381三个实例;
2.设置主从
在redis中设置主从有两种方式:
(1)在redis.conf中设置slaveof(永久)
(2)使用redis客户端连接到服务,执行salveod命令(临时)
3.查看主从信息,使用 INFO replication 命令。
4.测试
在主库写数据:
在从库读数据:
主从从架构:
操作与主从架构类似,不再写出。
从库只读:
默认情况下redis充当slave角色的只能读不能写。
可以在配置文件中开启非只读:slave-read-only no
主从复制的原理:
当从库与主库建立主从关系后,会像主库发送sync命令;
主库接收到sync命令后会在后台开始保存快照(rdb过程),并将期间接收到的写命令缓存起来;
当快照完成后,主redis会将快照文件和缓存的写命令一起发送给从redis;
从redis接收到后,会载入快照和执行收到的缓存的写命令;
之后,每当主redis接收到写命令后都会发送给从redis,从而保证数据的一致。
无磁盘复制:
如果主库所在的服务器的磁盘io能力较差的话,那么主从复制就会遇到瓶颈。的redis2.8.18版本后引入了无磁盘复制。
原理:
redis在与从库进行复制初始化的时候不再将快照保存在磁盘,而是通过网络直接发送给从库,从而避免了io性能差的问题。
开启无磁盘复制:repl-diskless-sync yes
主从架构出现宕机怎么办?
如果在主从复制架构中遇到宕机的话,一般要分情况:
1.从redis宕机
这种情况相对来说比较简单,只需将从redis重启,重启后从redis会自动加入到主从架构中,完成数据的同步。而且从redis2.8开始还实现了主从断线后恢复的情况下实现增量更新的功能。
2.主redis宕机
需要完成两步,第一步是在从redis中执行SLAVEOF NO ONE 命令,断开主从关系并且提升为主库继续提供服务;第二步是将主库重新启动,执行SLAVEOF命令,将其设置为其他库的从库,这时数据就会更新回来。这个过程一般使用哨兵来监听。
最新文章
- Android popupwindow使用心得(一)
- SQL Server通过File Header Page来进行Crash Recovery
- Asp.net MVC 的八个扩展点
- I2C总线和S5PV210的I2C总线控制器
- React Native 开发之 (05) flexbox布局
- 深入JVM-垃圾回收概念与算法
- redis监控状态
- iOS7 下去掉状态栏(全屏)
- iOS系统控件显示中文
- 前端性能优化工具--DOM Monster
- 省市县 三级 四级联动Javascript JQ 插件PCASClass.js
- Struts2 Annotation 默认返回Tiles2布局
- IOI 2009:Mecho
- android小知识之自定义通知(toast)
- JS响应数据
- Java生成名片式的二维码源码分享
- IP通信基础课堂笔记----第三章(自认为的重点)
- Linux基础(一)系统api与库函数的关系
- caffe出错:Unknown bottom blob 'data' (layer 'conv1', bottom index 0)
- c# 集合中有数字、字符的Orderby排序
热门文章
- SpringBoot之整合Quartz调度框架-基于Spring Boot2.0.2版本
- Spring学习之Spring与Mybatis的两种整合方式
- PHP jdtojulian() 函数
- PHP xml_set_notation_decl_handler() 函数
- 5.21 省选模拟赛 luogu P4297 [NOI2006]网络收费 树形dp
- 从别人的代码中学习golang系列--03
- SparkSQL &; Spark on Hive &; Hive on Spark
- mysqld_multi多实例部署
- LeetCode 87,远看是字符串其实是搜索,你能做出来吗?
- 嵌入式Linux串口编程简介