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

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

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

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

三. 什么是主从复制??

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

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

  •  建立连接阶段
  •     数据同步阶段
  •     命令传播阶段(反复同步)

redis中存放数据后获取到的数据是空的_开发语言

  •  修改复制缓冲区大小
  •  通过设置合理的超时时间,确认是否释放slave
  •  设置暂时屏蔽程序对该slave的数据访问(慎用,除非对数据一致性要求很高)

五. 什么是哨兵??

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

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

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

七. 如何使用哨兵??

  •  略

八. 什么是缓存预热??

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

九. 什么是缓存雪崩??

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

十. 什么是缓存击穿??

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

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

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

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

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