• Redis学习2


    Redis主从复制

    主要作用有:

    1. 数据冗余:数据的热备份
    2. 故障恢复:当主节点出现问题时,可以由从节点提供服务
    3. 负载均衡:在主从复制的基础上,配合读写分离,可以主由节点提供写服务,从节点读服务,分担服务器负载
    4. 高可用的基石:主从复制还是哨兵和集群能实施的基础

    配置

    只配置从库,不用配置主库,Redis默认自己是主库

    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:8ca8b9b49744c816d7c5e4b756c6d98bea328b77
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    

    windows系统下多开redis配置

    复制几份conf文件,修改端口号、日志输出路径、dump.rdb文件名

    配置主从

    主机不用管,配置从机

    127.0.0.1:6380> slaveof 127.0.0.1 6379
    OK
    127.0.0.1:6380> info replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:1
    master_sync_in_progress:0
    slave_repl_offset:70
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:b0a2083de25acc9a31db695b7755cd0314364df0
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:70
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:70
    ##############################################################
    # 主机信息
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=127.0.0.1,port=6380,state=online,offset=182,lag=0
    master_replid:b0a2083de25acc9a31db695b7755cd0314364df0
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:182
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:182
    ##############################################################
    # 配置从机2
    127.0.0.1:6381> slaveof 127.0.0.1 6379
    OK
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=127.0.0.1,port=6380,state=online,offset=350,lag=1
    slave1:ip=127.0.0.1,port=6381,state=online,offset=350,lag=1
    master_replid:b0a2083de25acc9a31db695b7755cd0314364df0
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:350
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:350
    

    细节

    主机可以写,从机只能读

    重新连接的时候,从机会进行全量复制,所以不用担心数据不同步问题,正常运行状态是增量复制

    Slaveof No One 可以使自己变成主机

    哨兵模式

    配置哨兵文件sentinel.conf

    #sentinel monitor 被监视的名称(随意) host port 是否投票
    sentinel monitor myredis 127.0.0.1 6379 1
    ############################################
    # 启动哨兵监视
    redis-server sentinel.conf --sentinel
    
    
    

    如果主机down了,哨兵会自动选一个从机变成主机,如果主机又回来了,主机自动变成从机

    优点

    1. 哨兵集群,基于主从复制模式,所有的主从模式配置的优点,他都有

    2. 主从可以切换,故障可以转移,系统的可用性就会更好

    3. 哨兵模式就是主从模式的升级

    缺点

    1. Redis不好在线扩容了,集群容量一旦到达上限,在线扩容就十分麻烦
    2. 实现哨兵模式的配置其实很麻烦的

    Redis缓存穿透和雪崩

    缓存穿透(查不到)

    大量访问缓存层没有的东西,频繁的访问数据库,导致服务器瘫痪。

    解决方案

    布隆过滤器:对所有可能查询的参数以Hash形式存储,在控制层先校验,不符合则丢弃

    缓存空对象

    缓存击穿(量太大,缓存过期!)

    大量访问集中在一个点上,频繁的访问,导致服务器崩溃。

    举例:微博热点,缓存了60秒,60秒之后过期了,61秒的时候,1秒中的时间,大量的访问冲击到数据库。

    解决方案:

    热点数据永不过期

    加护斥锁,限制访问数据库

    缓存雪崩

    Redis宕机! 停电

    解决方案:

    Redis高可用,多设几台,异地多活

    限流降级

    数据预热


    视频学习资料:B站 狂神说

    https://www.bilibili.com/video/BV1S54y1R7SB?p=34

  • 相关阅读:
    数据库主从同步相关问题
    前端使用node.js的http-server开启一个本地服务器
    css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位
    通过浏览器F12开发工具快速获取别的网站前端代码的方法
    vue打包app嵌入h5,区分app进入和android,ios显示不同的下载链接
    vue实现验证码倒计时60秒的具体代码
    vue用hbuilderX打包app嵌入h5方式云打包和遇到的问题
    Cookie写不进去问题深入调查 https Secure Cookie
    vue配置手机通过IP访问电脑开发环境
    区块链名词解析:ICO、IFO、IEO和IMO,分别是什么呢?
  • 原文地址:https://www.cnblogs.com/huacha/p/13991455.html
Copyright © 2020-2023  润新知