06:缓存篇(6)

本文探讨了缓存使用的原因,详细解释了缓存穿透、击穿和雪崩问题及其解决方案。同时,讨论了如何保证Redis与MySQL数据的一致性,以及如何设计和优化分布式锁。此外,还介绍了Redis中Key过期时间的配置及其原理,并针对海量数据场景下的快速查询给出了思路。
摘要由CSDN通过智能技术生成

目录

一、为什么使用缓存?

二、什么是缓存穿透?缓存击穿?缓存雪崩? 怎么解决?

三、如何保证Redis与数据库的数据一致?

四、如何设计一个分布式锁?如何对锁性能进行优化?

五、Redis如何配置Key的过期时间?他的实现原理是什么?

六、海量数据下,如何快速查找一条记录?


一、为什么使用缓存?

1、高性能
2、高可用

二、什么是缓存穿透?缓存击穿?缓存雪崩? 怎么解决?

1. 缓存穿透: 缓存中查不到,数据库中也查不到。
解决方案:
1)对参数进行合法性校验。
2)将数据库中没有查到结果的数据也写入到缓存。这时要注意为了防止Redis被无用的Key占满,这一类缓存的有效期要设置得短一点。
3) 引入布隆过滤器,在访问Redis之前判断数据是否存在。 要注意布隆过滤器存在一定的误判率,并且,布隆过滤器只能加数据不能减数据。
2. 缓存击穿:缓存中没有,数据库中有。一般是出现在存数数据初始化以及key过期了的情况。他的问题在于,重新写入缓存需要一定的时间,如果是在高并发场景下,过多的请求就会瞬间写到DB上,给DB造成很大的压力。
解决方案:
1)设置这个热点缓存永不过期。这时要注意在value当中包含一个逻辑上的过期时间,然后另起一个线程,定期重建这些缓存。
2)加载DB的时候,要防止并发。
3.缓存雪崩: 缓存大面积过期,导致请求都被转发到DB。
解决方案:
1)把缓存的时效时间分散开。例如,在原有的统一失效时间基础上,增加一个随机值。
2)对热点数据设置永不过期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thomas.Sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值