Redis(二)

 

一. Redis中的数据 删除策略??

  1.  删除策略:
    •  针对 已过期 数据的处理策略
  2. 三种策略:
    •  定时删除
    •    惰性删除(默认)
    •    定期删除(默认)
  3. 定时删除(极端):
    •    性能换空间(时间换空间)
    •    过期,立即删除
  4. 惰性删除(极端):
    •  空间换性能(空间换时间)
    •     过期,再次访问,判断删除
  5. 定期删除(折中):
    •  周期性抽查存储空间(随机抽查,重点抽查)
    •    每秒钟执行server.hz次serverCron()-------->databasesCron()--------->activeExpireCycle()对每个expires[*]逐一进行检测,随机挑选W个key检测
      •  如果key超时,删除key
      •  如果一轮中删除的key的数量>W*25%,循环该过程
      •  如果一轮中删除的key的数量≤W*25%,检查下一个expires[*],0-15循环
      •  W取值=ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP属性值

二. Redis中的数据 淘汰策略??

  1.  淘汰策略:
    •  新数据加入,检测内存是否充足,不充足,临时删除一些数据,为新加入数据,腾空间,此策略为逐出算法
  2. 策略配置:
    •  最大可使用内存
    •    每次选取待删除数据的个数
    •    对数据进行删除的选择策略
  3.  删除策略:(3类8种)
    •  第一类:  检测易失数据
      • volatile-lru:挑选最近最少使用(最近不用的)的数据淘汰
      • volatile-lfu:挑选最近使用次数最少的数据淘汰
      • volatile-ttl:挑选将要过期的数据淘汰
      • volatile-random:任意选择数据淘汰
    •    第二类:     检测全库数据
      • allkeys-lru:挑选最近最少使用的数据淘汰
      • allkeLyRs-lfu::挑选最近使用次数最少的数据淘汰
      • allkeys-random:任意选择数据淘汰,相当于随机
    •    第三类:     放弃数据驱逐
      • no-enviction(驱逐):禁止驱逐数据(redis4.0中默认策略),会引发OOM(Out Of Memory)
  4. 淘汰策略配置依据:
    •   查看监控信息中的缓存hit和miss次数,根据业务需求调优Redis配置

三. 什么是主从复制??

  1. 主从复制:
    • 将master中的数据,即时&有效复制到slave中
  2. 主从特征:
    • 一个master可以拥有多个slave(一对多)
    • 一个slave只对应一个master(一对一)
  3. 主从职责:
    • 主(master):
      • 数据
      • 同步数据至slave
      •    读数据
    • 从(slave):
      • 数据
  4. 作用:
    • 读写分离 : master写; slave读
    • 负载均衡 : slave 分担 master 负载
    • 故障恢复 : master宕机, slave提供服务
    • 数据冗余 : 实现数据 热备份
    • 高可用基石 : 基于主从复制,构建哨兵模式与集群, 实现高可用方案

四. 主从复制的工作流程 以及 常见问题 及 解决方案??

  1.  工作流程:(3个阶段)
    •  建立连接阶段
    •     数据同步阶段
    •     命令传播阶段(反复同步)
  2.  常见问题 及 解决方案: 
    •  频繁全量复制
      •  修改复制缓冲区大小
    •    频繁网络中断
      •  通过设置合理的超时时间,确认是否释放slave
    •    数据不一致
      •  设置暂时屏蔽程序对该slave的数据访问(慎用,除非对数据一致性要求很高)

五. 什么是哨兵??

  1.  哨兵:
    •  管理多个Redis服务器的分布式系统
    •     用于对主从结构(非集群)中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。
  2.  注意:
    •  哨兵 也是一台Redis服务器, 只是不提供数据相关服务
    •    哨兵 redis服务器数量配置为单数

六. 哨兵的作用 ,工作原理 ??

  1. 作用:
    •    监控 : 主从服务器 运行,存活状态
    •    通知 : 被监控的服务器出现问题,向其他哨兵发送通知
    •    自动故障转移 : 断开主从之间连接,选取一个从服务器作为主服务器,其他从服务器来连接此主服务器,并告知客户端新服务器地址
  2. 工作原理
    •   略

七. 如何使用哨兵??

  •  略

八. 什么是缓存预热??

  •  出现场景:
    •   服务器启动后迅速宕机
  •  原因:
    •   大量请求同时进入缓存获取数据,但是没有数据,于是去数据库获取,再存入缓存,造成了短时间内对Redis的高强度操作导致的迅速宕机
  • 缓存预热:
    •   缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统。用户直接查询事先被预热好的缓存数据。避免,用户请求的时候,再去加载相关的数据。
  • 解决方案:
    •   Kafka

九. 什么是缓存雪崩??

  •  出现场景:
    •   Redis服务器奔溃
    •        数据库奔溃
    •        ........等等
  •  原因:
    •   在一个较短的时间内,缓存中较多的key集中过期
  • 缓存雪崩:
    •   缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造成压力。
  • 解决方案:
    •   超热数据使用永久key
    •        定期维护(自动+人工)
    •        设置热点数据有效期错峰:固定值+随机值,避免同时失效的情况

十. 什么是缓存穿??

  •  出现场景:
    •        数据库奔溃
    •       但Redis正常
  •  原因:
    •   Redis中某个key过期,该key访问量巨大
    •   大量请求统一数据到Redis后,都未命中
    •        直接击穿了Redis,短时间内直接访问数据库,
    •        导致数据库压力瞬间变大,直至奔溃
  • 缓存击穿:
    •   缓存击穿就是单个高热数据过期的瞬间,数据访问量较大,未命中redis后,发起了大量对同一数据的数据库访问,导致对数据库服务器造成压力。
  • 解决方案:
    •  预先设定
    •    现场调整
    •    后台刷新数据
    •    二级缓存

十一. 什么是缓存穿透??

  •  出现场景:
    •        数据库奔溃
    •       但Redis正常
  •  原因:
    •   Redis中大面积出现未命中
    •   出现非正常URL访问
  • 缓存击穿:
    •   缓存击穿就是指访问了不存在的数据,跳过了合法数据的redis数据缓存阶段,每次访问数据库,导致对数据库服务器造成压力。
  • 解决方案:
    •        在用户第一次请求时,如果找不到数据,就在redis中为用户请求的key设置value为null,或者使用布隆过滤器

十二. Redis相关的监控指标??

  1. 性能指标:Performance
    • 响应请求的平均时间
    • 平均每秒处理请求总数
    • 缓存查询命中率
  2. 内存指标:Memory
    • 当前内存使用量
    • 内存碎片率
    • 为避免内存溢出删除的key的总数量
    • 基于阻塞操作(BLPOP等)影响的客户端数量
  3. 基本活动指标:Basic_activity
    • 当前客户端连接总数
    • 当前连接slave总数
    • 最后一次主从信息交换距现在的秒
    • key的总数
  4. 持久性指标:Persistence
    • 当前服务器最后一次RDB持久化的时间
    • 当前服务器最后一次RDB持久化后数据变化总量
  5. 错误指标:Error
    • 被拒绝连接的客户端总数
    • key未命中的总次数
    • 主从断开的秒数
原文地址:https://www.cnblogs.com/bin563597293/p/14371573.html