缓存雪崩原因及解决方案

缓存雪崩

一、缓存有效期

一般情况下我们会给缓存的key设置有效时间,当key过期时,会被自动删除。

设置有效期的作用如下:

1、提高系统吞吐量。
2、保持数据一致性的重要机制。
3、避免堆积冗余数据。

设置有效时间的方式:

1、可设置的值:秒/毫秒;指定时间戳;设置为永久。
2、在spring框架中,可以使用spring cache框架,通过配置cacheManager的有效期属性来实现,如在RedisCacheManager 中配置 expire 属性。

二、什么是缓存雪崩

缓存雪崩是因为缓存失效导致数据未加载到内存中,或者缓存时间大面积地失效,从而导致所有请求都会去查数据库,导致数据库、CPU和内存负载过高,甚至宕机。

三、缓存雪崩的原因及解决方案

1、缓存大面积失效
解决方案:避免缓存设置相近的有效期;为有效期增加随机值;统一规划有效期,失效时间均匀分布。
2、对热点数据持续高并发
解决方案:使用互斥锁:jvm锁机制;分布式锁机制。
3、有效期本身的缺陷
解决方案:缓存永不过期,异步更新。
优点:不阻塞线程,用户体验好,不会出现雪崩效应。
缺点:不保证一致性,代码复杂度增大(每个value值都要维护异步更新代码),容易堆积垃圾数据。

四、双缓存方案

主缓存:有效期按照经验值设置,主要读取的缓存,主缓存失效后从数据库加载最新值。
备份缓存:有效期长,获取锁失败时读取的缓存,主缓存更新时需要同步更新备份缓存。
其实就是缓存降级策略。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值