码农知识堂 - 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 等分布式中间件的分布式互斥锁,或者本地互斥锁以保证仅少量的请求能请求数据库并重新构建缓存,其余线程则在锁释放后能访问到新缓存
更新频繁、缓存刷新耗时长:利用定时线程在缓存过期前主动地重新构建缓存或者延后缓存的过期时间,以保证所有的请求能一直访问到对应的缓存
相关阅读:
应用第三方ByteTrack实现目标跟踪
LangChain结合DSPy,高效实现提示工程自动优化
UE5 运行时生成距离场数据
vernemq 一个可用的入门指南之一:Mac下的安装及使用,使用MQTTX访问verneMQ
基于PHP+MySQL米步童鞋商城网站的设计与实现
【信号处理】扩展卡尔曼滤波EKF(Matlab代码实现)
ICMP协议(一)
不允许你还没有了解哈希表、哈希桶、哈希冲突的解决,如何避免冲突
【Java集合类面试十八】、ConcurrentHashMap是怎么分段分组的?
ES6 高阶函数的使用详解
原文地址:https://blog.csdn.net/qq_41956014/article/details/127612702
最新文章
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
小工具
小游戏
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
京公网安备 11010502049817号