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命令,将其设置为其他库的从库,这时数据就会更新回来。这个过程一般使用哨兵来监听。
Redis主从复制(读写分离)的更多相关文章
- redis 主从复制+读写分离+哨兵
1.redis读写分离应用场景 当数据量变得庞大的时候,读写分离还是很有必要的.同时避免一个redis服务宕机,导致应用宕机的情况,我们启用sentinel(哨兵)服务,实现主从切换的功能.redis ...
- redis主从复制读写分离
主从复制,读写分离 Master/Slave 是什么 master写入 slave读取 能干嘛 读写分离,更加安全,性能提升 怎么玩 一主二仆.薪火相传.反客为主 周明老师,能够把长篇大论总结的很精辟 ...
- 基于Redis主从复制读写分离架构的Session共享
1.搭建主从复制 第一步:将Redis拷贝到虚拟机上的指定文件夹内,此Redis作为主服务 第二步:将Redis拷贝到本机的指定文件夹内,此Redis作为从服务 第三步:修改主服务的配置文件(redi ...
- 基于Redis主从复制读写分离架构的Session共享(Windows Server)
搭建主从复制 1.安装软件 下载Redis-x64-3.2.100.zip:https://github.com/MicrosoftArchive/redis/releases 第一步:将Redis拷 ...
- Redis 主从复制, 读写分离
1: 是什么? 2: 经常是配置从库, 不配置主库 3.1: 每次与 master 断开之后都要从连, 除非你配置了redis.conf 3.2: 获取当前redis 服务信息 => info ...
- Redis的读写分离
1.概述 随着企业业务的不断扩大,请求的并发量不断增长,Redis可能终会出现无法负载的情况,此时我们就需要想办法去提升Redis的负载能力. 读写分离(主从复制)是一个比较简单的扩展方案,使用多台机 ...
- redis sentinel 读写分离
redis sentinel 读写分离 https://www.jianshu.com/p/d1636776bb40
- mysql主从复制-读写分离
mysql主从复制+读写分离 环境:mysql主:193.168.1.1mysql从:193.168.1.2amoeba代理:193.168.1.3########################## ...
- Mysql多实例安装+主从复制+读写分离 -学习笔记
Mysql多实例安装+主从复制+读写分离 -学习笔记 .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px ...
- windows下Redis 主从读写分离部署
原文:windows下Redis 主从读写分离部署 1.可直接下载window下的运行文件(下面这个链接) 也可以浏览github 查看相应的版本说明文档 https://github.com/Ser ...
随机推荐
- 友好城市dp
// // Created by Arc on 2020/4/27. //对了,这篇题解的代码是小白自己写的.有啥错误还请各位大佬多多包涵. /* * 某国有一条大河(一条大河~~~~,波浪宽~~~~ ...
- 图文并茂,带你认识 JVM 运行时数据区
跨平台的本质 关于 JVM, Java 程序员的最熟悉的一句话就是:一处编码,到处执行,指的就是 Java 语言可以通过 JVM 实现跨平台.而跨平台到底跨越了什么这个问题相信很少有人知道,接下来就跟 ...
- Python raw_input() 函数
python raw_input() 用来获取控制台的输入.高佣联盟 www.cgewang.com raw_input() 将所有输入作为字符串看待,返回字符串类型. 注意:input() 和 ra ...
- PHP preg_filter() 函数
preg_filter 函数用于执行一个正则表达式搜索和替换.高佣联盟 www.cgewang.com 语法 mixed preg_filter ( mixed $pattern , mixed $r ...
- 阿里居然推出了开源的JDK,你造么?
简介 Alibaba Dragonwell 是一款免费的, 生产就绪型Open JDK 发行版,提供长期支持,包括性能增强和安全修复.阿里巴巴拥有最丰富的Java应用场景,覆盖电商,金融,物流等众多领 ...
- 实验10—— java读取歌词文件内容动画输出
1.Read.java package cn.tedu.demo; import java.io.BufferedReader; import java.io.File; import java.io ...
- 用MPI进行分布式内存编程(1)
<并行程序设计导论>第三章部分程序 程序3.1运行实例 #include<stdio.h> #include<string.h> #include<mpi.h ...
- Qt 中十六进制字节流转换为Base64编码
在Qt中,在网络通信时,有时需要将16进制字节流转换为Base64编码传输,在Qt的QByteArray类中,提供了与Base64转换的接口: //16进制字节流转为Base64 QByteArray ...
- C#LeetCode刷题,走进Google,走近人生
概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/1015 访问. 本系列博文将会向大家展示我在LeetCode上的刷 ...
- C#LeetCode刷题之#653-两数之和 IV - 输入 BST(Two Sum IV - Input is a BST)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4098 访问. 给定一个二叉搜索树和一个目标结果,如果 BST 中 ...