zoukankan      html  css  js  c++  java
  • 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命令,将其设置为其他库的从库,这时数据就会更新回来。这个过程一般使用哨兵来监听。

  • 相关阅读:
    场景设计法
    判定表驱动分析方法
    错误推测法
    Ubuntu软件包管理命令全面集锦
    MySql模糊查询
    VC++ 列表控件的使用方法
    Java笔记原生数据类型【二】
    DEDECMS 关键字不能小于2个字节!
    Linux 使用yum install安装mysql登陆不上解决办法
    PHP数据学习-二维数组【3】
  • 原文地址:https://www.cnblogs.com/ericz2j/p/11110598.html
Copyright © 2011-2022 走看看