关注
除了布隆过滤器,解决缓存穿透问题的方法在实际应用中可以这样实施:
空对象缓存:
假设我们有一个电商网站,用户可以通过商品ID查询商品信息。有时,某些不存在的商品ID会被恶意用户大量请求,导致每次查询都会穿透缓存直接访问数据库。为了避免这种情况,我们可以采用空对象缓存策略。当查询一个不存在的商品ID时,我们在缓存中存储一个空对象或特殊标识,并设置一个较短的过期时间(如30秒)。这样,当相同的请求再次到来时,系统可以直接从缓存中返回空对象或标识,而不会再次查询数据库。
缓存预热:
在双11或大型促销活动之前,我们知道某些热门商品将会受到大量访问。因此,我们可以在活动开始之前,提前将这些热门商品的信息加载到缓存中。这样,在活动高峰期,这些热门商品的请求可以直接从缓存中获取,大大减少了数据库的访问压力。
设置缓存过期时间:
对于某些时效性较强的数据,如新闻、折扣信息等,我们可以为它们设置合理的缓存过期时间。在过期之前,系统可以通过后台任务或定时任务更新缓存数据。这样,即使缓存数据过期,系统也能在较短时间内重新加载新的数据到缓存中,避免了缓存击穿的情况。
限流与熔断:
在某些高并发场景下,为了保护系统不被过量的请求所压垮,我们可以采用限流策略。例如,使用Nginx或Apache的限流模块来限制单位时间内的请求数量。当请求量超过设定的阈值时,系统可以拒绝多余的请求或进行排队处理。同时,结合熔断机制,当系统检测到异常或缓存击穿等风险时,可以临时切断对数据库等关键服务的访问,返回默认数据或提示信息,等待系统恢复正常后再重新提供服务。
查看原帖
点赞 评论
相关推荐
02-26 10:01
南方科技大学 产品经理 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你感受到金三银四了嘛? #
74197次浏览 619人参与
# 你上一次加班是什么时候? #
137289次浏览 757人参与
# 虽然0面试,但今天___,夸夸自己 #
9356次浏览 175人参与
# 2025秋招体验点评 #
99757次浏览 753人参与
# 春招 / 实习投递,你最焦虑的一件事 #
54708次浏览 1054人参与
# 美团笔试 #
698825次浏览 4646人参与
# 米哈游笔试 #
553821次浏览 1095人参与
# AI岗位暴涨12倍,你会转AI赛道吗? #
5285次浏览 95人参与
# 今天你投了哪些公司? #
154140次浏览 2748人参与
# 金三银四,你的春招进行到哪个阶段了? #
18697次浏览 254人参与
# 27届实习投递记录 #
985次浏览 23人参与
# vivo笔试 #
13125次浏览 122人参与
# 文科生还参加今年的春招吗 #
13748次浏览 100人参与
# 腾讯音乐求职进展汇总 #
157723次浏览 1070人参与
# 小米编程考试 #
31805次浏览 151人参与
# AMA #
17680次浏览 58人参与
# AI项目实战 #
6918次浏览 329人参与
# 字节7000实习来了,你投了吗? #
4666次浏览 23人参与
# 刚工作的你,踩过哪些坑? #
6424次浏览 142人参与
# 蚂蚁集团笔试 #
3832次浏览 22人参与
拼多多集团-PDD成长空间 997人发布