【你问我答】缓存击穿该如何解决?

问题描述:

缓存击穿该如何解决?

回答有奖:

选取一位认真回答问题的牛友,赠送200牛币!
▶回答尽量有自己的思考,不要单纯的只是复制粘贴定理定义,或者他人blog哦~

你问我答问题汇总:点击进入
关注你问我答栏目:点击关注

你问我答 - 答问题,成大佬,拿牛币!
你问我答是牛客新栏目,每周1期几个面试中真实遇到的问题,
牛友在问题贴下留下自己的知识,经验与见解,
帮助更多牛友了解更多技术相关知识!
#悬赏##Java##面试题目#
全部评论
热点数据永不过期 写数据库加锁?
1 回复 分享
发布于 2020-08-11 15:49
缓存击穿 = 单点key失效,大量请求打进db * 使用分布式锁,只允许一个线程去数据库拿数据 * watchdog 策略, 搞一个线程用作fetch数据到缓存 * 熔断器兜底,必要时候拒绝服务 还有别的降低并发的方法,但都治标不治本
点赞 回复 分享
发布于 2020-08-11 16:09
缓存击穿:一般是黑客故意去请求缓存中不存在的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。 解决办法: 有很多种方法可以有效地解决缓存击穿问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。另外也有一个更为简单粗暴的方法(我们采用的就是这种),如果一个查询返回的数据为空(不管是数 据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。
点赞 回复 分享
发布于 2020-08-13 19:20

相关推荐

想润的芹菜人狠话不多:把其中一个老总放中间都会得罪另一个
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务