美文网首页
redis Redis主从架构

redis Redis主从架构

作者: dylan丶QAQ | 来源:发表于2020-09-16 13:37 被阅读0次

起因:随着项目的进一步推广,数据量的增大,直接访问mysql数据库获取数据所使用的时间越来越长,为解决当前主要矛盾,决定引入redis非关系型数据库作为缓存层,使得数据并不能直接命中数据库,减少访问数据库带来的压力,从而加快运行速度。


1. Redis主从架构

1.1. 主从原理分析

主从出现的原因

主从出现的原因

  • 高并发
    • 官方数据表示Redis的读数据11w/s左右,写速度是8w/s左右
    • Redis尽量少写多读,符合缓存的适用要求
    • 可以通过主从架构来进行读写分离
  • HA
    • 如果有一个以上的从库就会对节点进行备份

同步的过程中一定要开启持久化

  • 如果master出现宕机内存丢失,从库也会删除
  • master进行功能性重启,内存数据丢失,也会同步给slave

主从复制原理

  • 当slave第一次连接时,会触发全量同步,如果已经连接过了,只会同步新增数据
  • 全量备份分为落盘和不落盘两种形式,默认是落盘
# 不落盘复制配置 yes不落盘,no落盘
repl-diskless-sync no
# 等待其他slave连接的一个时间周期,单位是秒
repl-diskless-sync-delay 5
  • 支持断点续传
  • 如果从库过多会导致占用带宽较大,所以从不易过多

主从的结构除了一对多,还可以是树形的,树形结构用的比较少

树形结构

1.2. 主从设置

#可以通过命令看一下主从信息,v5.x版本前从是用slave表示,之后换成replication
info replication
#修改slave的redis.conf
replicaof 192.168.1.100 6379 #master的ip,master的端口
masterauth icoding #主机的访问密码
# yes 主从复制中,从服务器可以响应客户端请求
# no 主从复制中,从服务器将阻塞所有请求,有客户端请求时返回“SYNC with master in progress”;
replica-serve-stale-data yes
# slave节点只允许read 默认就是 yes
# 这个配置只对slave节点才生效,对master节点没作用
replica-read-only yes 
# slave根据指定的时间间隔向master发送ping请求
# 时间间隔可以通过 repl-ping-replica-period 来设置,默认10秒
repl-ping-replica-period 10
# 复制连接超时时间。
# master和slave都有超时时间的设置。
# master检测到slave上次发送的时间超过repl-timeout,即认为slave离线,清除该slave信息。
# slave检测到上次和master交互的时间超过repl-timeout,则认为master离线。
# 需要注意的是repl-timeout需要设置一个比repl-ping-slave-period更大的值,不然会经常检测到超时。
repl-timeout 60
# 是否禁止复制tcp链接的tcp nodelay参数,可传递yes或者no。
# 默认是no,即使用tcp nodelay,允许小包的发送。对于延时敏感型,同时数据传输量比较小的应用,开启TCP_NODELAY选项无疑是一个正确的选择
# 如果master设置了yes来禁止tcp nodelay设置,在把数据复制给slave的时候,会减少包的数量和更小的网络带宽。
# 但是这也可能带来数据的延迟。
# 默认我们推荐更小的延迟,但是在数据量传输很大的场景下,建议选择yes。
repl-disable-tcp-nodelay no
# 复制缓冲区大小,这是一个环形复制缓冲区,用来保存最新复制的命令。
# 这样在slave离线的时候,不需要完全复制master的数据,如果可以执行部分同步,只需要把缓冲区的部分数据复制给slave,就能恢复正常复制状态。
# 缓冲区的大小越大,slave离线的时间可以更长,复制缓冲区只有在有slave连接的时候才分配内存。
# 没有slave的一段时间,内存会被释放出来,默认1m。
repl-backlog-size 5mb
# master没有slave一段时间会释放复制缓冲区的内存,repl-backlog-ttl用来设置该时间长度。
# 单位为秒。
repl-backlog-ttl 3600
# 当master不可用,Sentinel会根据slave的优先级选举一个master。
# 最低的优先级的slave,当选master。
# 而配置成0,永远不会被选举。
# 注意:要实现Sentinel自动选举,至少需要2台slave。
replica-priority 100
# redis提供了可以让master停止写入的方式,如果配置了min-slaves-to-write,健康的slave的个数小于N,mater就禁止写入。
# master最少得有多少个健康的slave存活才能执行写命令。
# 这个配置虽然不能保证N个slave都一定能接收到master的写操作,但是能避免没有足够健康的slave的时候,master不能写入来避免数据丢失。
# 设置为0是关闭该功能,默认也是0。
min-replicas-to-write 2
# 延迟小于min-replicas-max-lag秒的slave才认为是健康的slave。
min-replicas-max-lag 10

不要以为每天把功能完成了就行了,这种思想是要不得的,互勉~!

相关文章

  • redis 主从架构搭建及原理详解

    1. redis 主从架构原理详解 (1) 读写分离 在redis主从架构中,Master节点负责处理写请求,Sl...

  • redis总结

    [toc] redis总结 redis 雪崩,穿透,击穿 redis集群 安装前准备 主从 架构 优缺点 优点: ...

  • 14. Redis 主从复制

    9. Redis高可用集群 9.1 主从复制架构 主从模式(master/slave), 可以实现Redis数据的...

  • 突破Java面试(23 - 3) - Redis replica

    redis replication -> 主从架构 -> 读写分离 -> 水平扩容支撑读高并发 1 图解redis...

  • Redis主从架构

    最简单的Redis主从架构即一台master,两台slave。 主从原理 Redis Master 写操作Redi...

  • redis Redis主从架构

    起因:随着项目的进一步推广,数据量的增大,直接访问mysql数据库获取数据所使用的时间越来越长,为解决当前主要矛盾...

  • Redis三种架构及其原理

    一、主从架构 主从架构就是一个master节点,两个slave节点。 1.1 Redis主从数据如何同步? Red...

  • redis集群

    本章要点 Redis主从 Redis哨兵 Redis集群 主从复制原理 1. Redis 主从 比较简单在redi...

  • 15. Redis 哨兵

    10. Redis哨兵(高可用) 10.1 redis集群介绍 主从架构无法实现master和slave角色的自动...

  • redis高可用

    1.有备无患-主从 redis单副本 Redis单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,...

网友评论

      本文标题:redis Redis主从架构

      本文链接:https://www.haomeiwen.com/subject/wegcyktx.html