关注
除了布隆过滤器,解决缓存穿透问题的方法在实际应用中可以这样实施:
空对象缓存:
假设我们有一个电商网站,用户可以通过商品ID查询商品信息。有时,某些不存在的商品ID会被恶意用户大量请求,导致每次查询都会穿透缓存直接访问数据库。为了避免这种情况,我们可以采用空对象缓存策略。当查询一个不存在的商品ID时,我们在缓存中存储一个空对象或特殊标识,并设置一个较短的过期时间(如30秒)。这样,当相同的请求再次到来时,系统可以直接从缓存中返回空对象或标识,而不会再次查询数据库。
缓存预热:
在双11或大型促销活动之前,我们知道某些热门商品将会受到大量访问。因此,我们可以在活动开始之前,提前将这些热门商品的信息加载到缓存中。这样,在活动高峰期,这些热门商品的请求可以直接从缓存中获取,大大减少了数据库的访问压力。
设置缓存过期时间:
对于某些时效性较强的数据,如新闻、折扣信息等,我们可以为它们设置合理的缓存过期时间。在过期之前,系统可以通过后台任务或定时任务更新缓存数据。这样,即使缓存数据过期,系统也能在较短时间内重新加载新的数据到缓存中,避免了缓存击穿的情况。
限流与熔断:
在某些高并发场景下,为了保护系统不被过量的请求所压垮,我们可以采用限流策略。例如,使用Nginx或Apache的限流模块来限制单位时间内的请求数量。当请求量超过设定的阈值时,系统可以拒绝多余的请求或进行排队处理。同时,结合熔断机制,当系统检测到异常或缓存击穿等风险时,可以临时切断对数据库等关键服务的访问,返回默认数据或提示信息,等待系统恢复正常后再重新提供服务。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
转发
05-27 11:57
点赞 评论 收藏
转发
牛客热帖
正在热议
# 和牛牛一起刷题打卡 #
4953次浏览 454人参与
# 机械制造薪资爆料 #
341688次浏览 4057人参与
# 牛客帮帮团来啦!有问必答 #
990810次浏览 15332人参与
# 通信硬件薪资爆料 #
242726次浏览 2285人参与
# 腾讯工作体验 #
146943次浏览 1410人参与
# 你觉得机械有必要实习吗 #
10347次浏览 143人参与
# 如何写一份好简历 #
301693次浏览 4333人参与
# 秋招开了,你想投哪些公司呢 #
130007次浏览 3392人参与
# 实习必须要去大厂吗? #
18386次浏览 265人参与
# 你的简历改到第几版了 #
323593次浏览 4864人参与
# 机械制造2024笔面经 #
410196次浏览 6055人参与
# 毕业租房也有小确幸 #
32541次浏览 1948人参与
# 2022毕业生求职现身说法 #
20722次浏览 313人参与
# 0offer互助地 #
53440次浏览 558人参与
# 晒一晒我的offer #
3656595次浏览 56979人参与
# 2022届毕业生现状 #
337584次浏览 4598人参与
# 为什么国企只招应届生 #
56289次浏览 411人参与
# 产品人专业大盘点 #
15131次浏览 120人参与
# 浅聊一下我实习的辛苦费 #
93680次浏览 918人参与
# 视觉/交互/设计岗位评价 #
3378次浏览 61人参与