Redis教程

Redis雪崩,击穿,穿透

本文主要是介绍Redis雪崩,击穿,穿透,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

雪崩

什么是雪崩

当在某个时刻大面积的key失效,此时会有大量的请求打在DB上面,造成DB的CPU和内存负载过高,甚至宕机

怎么处理雪崩
  1. 预防雪崩
    • 对每个key的失效时间加一个随机值,保证数据库不会在同一时间大面积失效
    • 设置热点数据不设置过期时间,有更新操作时对缓存进行更新就好了
  2. redis宕机引起的雪崩
    • 采用集群缓存,保证缓存服务的高可用。这种方案就是在发生雪崩前对缓存集群实现高可用,如果是使用 Redis,可以使用 主从+哨兵 ,Redis Cluster 来避免 Redis 全盘崩溃的情况
    • 开启Redis持久化机制,尽快恢复缓存集群。一旦重启,就能从磁盘上自动加载数据恢复内存中的数据。
  3. 防止MySQL不挂
    • ehcache本地缓存 + Hystrix限流&降级,避免MySQL被打死

击穿

什么的击穿

在某时刻的某个热点key失效,且有大量的请求对该key进行访问,导致请求全落在DB上,造成DB的CPU和内存负载过高,甚至宕机

怎么处理击穿
  1. 设置热点数据永远不过期
  2. 互斥锁。第一个查询数据的请求上使用一个 互斥锁来锁住它。其他的线程走到这一步拿不到锁就等着,等第一个线程查询到了数据,然后做缓存。后面的线程进来发现已经有缓存了,就直接走缓存。

穿透

用户不断请求不存在于Redis和数据库中的数据

怎么处理穿透
  1. 接口层增加校验。减少不合法请求
  2. 缓存空值
  3. 布隆过滤器
  4. 对单个IP每秒访问次数超出阈值的IP都拉黑
这篇关于Redis雪崩,击穿,穿透的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!