码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
Redis 缓存雪崩、穿透、击穿
缓存雪崩
缓存机器宕机,缓存无法使用,请求全部落数据库,数据库一般扛不住,然后数据库也宕机,导致服务彻底不可用;就算重启数据库,在高并发情况下,很快又会宕机
解决方案:
事前:redis 高可用,主从 + 哨兵,redis cluster,避免全盘崩溃
事中:本地 ehcache 缓存 + hystrix 或 sentinel 限流&降级,避免 MySQL 宕机
事后:redis 持久化,一旦重启,自动从磁盘上加载数据,快速恢复缓存数据
缓存穿透
对于大部分的请求的数据,在数据库中根本就不存在,每次查询的时候,先到缓存中查,缓存中没有再到数据库中查,如果查询的数在数据库中根本不存在,那么每次查询都会到数据库中查询,穿透过缓存去查数据库,视缓存于无物
解决方案:
设置空值:每次请求读取的时候,读取不到值的 key,就设置空值,这样只要缓存没失效,就能够防止直接去查数据库
布隆过滤器:能够对访问的请求起到一定的初筛作用,避免因数据不存在引起的查询压力,将要查询的数据映射到过滤器中,如果过滤器中不存在就一定不存在
缓存击穿
某些 key 非常热点,访问非常频繁,处于集中式高并发访问的情况,当这个 key 在失效的瞬间,大量的请求就击穿缓存,直接请求数据库
解决方案
缓存基本不变更:设置永不过期
更新不频繁、缓存刷新耗时少:采用基于 redis、zookeeper 等分布式中间件的分布式互斥锁,或者本地互斥锁以保证仅少量的请求能请求数据库并重新构建缓存,其余线程则在锁释放后能访问到新缓存
更新频繁、缓存刷新耗时长:利用定时线程在缓存过期前主动地重新构建缓存或者延后缓存的过期时间,以保证所有的请求能一直访问到对应的缓存
相关阅读:
Vue3 + 百度地图实现位置选择,获取地址经纬度
pjsip-2.9点对点时解决注册慢问题
Leetcode 算法面试冲刺 热题 HOT 100 刷题(406 416 437 438 448)(六十九)
项目集管理PgMP:聚焦战略、收益与治理︱项目管理者联盟联合创始人宣晓锋
C++实现wins后台监控键盘输入(Hook)
论文写作心得
设计模式-备忘录模式(Memento Pattern)
静态ip该如何靠谱的ip代理
About FreeType slant(italic,oblique) principle and algorithm
ctfshow unserialize
原文地址:https://blog.csdn.net/qq_41956014/article/details/127612702
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号