一些缓存常用概念及解决方案

本文详细解析了缓存系统中常见的三大问题:缓存穿透、缓存击穿及缓存雪崩,并提供了相应的解决方案。缓存穿透指无效请求直接冲击数据库;缓存击穿发生在热门数据超时的一瞬间;缓存雪崩则是缓存服务宕机导致的压力集中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓存都是部署在应用到数据库之间的,抗住流量高峰为数据库保驾护航。在分布式应用中,常见的问题有这些:
     一、缓存穿透
    描述:
    缓存和数据库都没有的记录被频繁请求,缓存没有起到缓冲请求的作用,请求直接到达数据库。
    解决方案:
    1、应用中过滤数据库中绝对不可能出现的Key值,在到达缓存前拦截。比如:商品ID自增长从1开始,而外部请求频繁请求0或-1以及其他小于0的值。
    2、记录这类数据KEY,设置KEY对应NULL值。
    二、缓存击穿
    描述:
    缓存中热门KEY被频繁请求,然而该KEY有超时时长在该KEY超时的那一瞬间所有请求都会直接到达数据库。
    解决方案:
    1、更新锁。在更新的时候确保只有一个线程来更新缓存,缓存更新成功后才允许其他线程访问。
    2、后台任务定时更新。在KEY超时之前强制更新一波缓存,但这个得精确计算每个KEY超时时间。
    三、缓存雪崩
    描述:
    当缓存服务节点因为未知因素宕机了,缓存压力全部压在其他缓存服务节点,最后整个缓存服务集群崩了,应用所有请求直达数据库,最终导致数据库服务崩了。
    解决方案:
    实时监控缓存服务节点运行情况,纳入运维预警管理。提前预估流量高峰,水平扩展缓存服务节点

博主地址——凤松轩博客 - 一个小小文艺范儿的个人

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值