雪崩
什么是雪崩
当在某个时刻大面积的key失效,此时会有大量的请求打在DB上面,造成DB的CPU和内存负载过高,甚至宕机
怎么处理雪崩
- 预防雪崩
- 对每个key的失效时间加一个随机值,保证数据库不会在同一时间大面积失效
- 设置热点数据不设置过期时间,有更新操作时对缓存进行更新就好了
- redis宕机引起的雪崩
- 采用集群缓存,保证缓存服务的高可用。这种方案就是在发生雪崩前对缓存集群实现高可用,如果是使用 Redis,可以使用 主从+哨兵 ,Redis Cluster 来避免 Redis 全盘崩溃的情况
- 开启Redis持久化机制,尽快恢复缓存集群。一旦重启,就能从磁盘上自动加载数据恢复内存中的数据。
- 防止MySQL不挂
- ehcache本地缓存 + Hystrix限流&降级,避免MySQL被打死
击穿
什么的击穿
在某时刻的某个热点key失效,且有大量的请求对该key进行访问,导致请求全落在DB上,造成DB的CPU和内存负载过高,甚至宕机
怎么处理击穿
- 设置热点数据永远不过期
- 互斥锁。第一个查询数据的请求上使用一个 互斥锁来锁住它。其他的线程走到这一步拿不到锁就等着,等第一个线程查询到了数据,然后做缓存。后面的线程进来发现已经有缓存了,就直接走缓存。
穿透
用户不断请求不存在于Redis和数据库中的数据
怎么处理穿透
- 接口层增加校验。减少不合法请求
- 缓存空值
- 布隆过滤器
- 对单个IP每秒访问次数超出阈值的IP都拉黑
标签:缓存,请求,DB,击穿,雪崩,key,Redis 来源: https://www.cnblogs.com/jarssion/p/15021425.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。