Redis如何防止缓存带来的问题?

使用Redis做缓存可能带来的问题

  1. 缓存雪崩:指缓存大面积的失效,导致大量查询落到了数据库上,使数据库挂掉
  2. 缓存击穿:缓存中热点Key突然失效,原本走缓存的大量请求直接打向了数据库,就好像在缓存中击穿了一个洞。
  3. 缓存穿透:用户一直请求缓存和数据库不存在的数据,每次请求缓存不命中,数据库也不命中,就像缓存不存在一样,同时不断地请求也给数据库带来压力。

解决方案:

缓存雪崩:首先尽量保证Redis集群的高可用性,发现机器宕机尽快补上,选择合适的内存淘汰策略 ,使用限流降级机制,避免Mysql崩掉,最后使用Redis的持久化机制保存的数据尽快恢复缓存。

缓存击穿:在被查询的数据上加互斥锁,一条线程拿到锁后其它线程只能等待。

缓存穿透:

  1. 一般方案:将那些从数据库中没有查询到的Key也放入缓存,并将值置为空,下次再查询时直接返回空, 并将该Key设置合适的过期时间,以免有相关Key数据后造成数据不一致的问题。
  2. 较好方案:使用布隆过滤器(Bloom Filter),它可以快速判断数据是否存在于某个集合中,如果判断数据不存在,那么它一定不存在直接返回空,如果判断数据存在,会先去缓存中查找,缓存命中 则直接返回,不命中则查数据库。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

如风之夏

感谢,你的鼓励是我前进的动力。

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

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

打赏作者

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

抵扣说明:

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

余额充值