Redis怎么解决缓存穿透、击穿、雪崩
想看看大佬是怎么解决的
缓存穿透、缓存击穿和缓存雪崩的解决方案:
问题描述:缓存和数据库中都没有的数据被频繁请求,导致每次请求都要访问数据库,增加数据库负载。
例子: 假设有一个用户请求一个不存在的商品ID(如ID为9999的商品),每次请求都会直接查询数据库。
解决方案:
布隆过滤器:
缓存空对象:
问题描述:缓存中没有但数据库中有的数据被频繁请求,通常是因为缓存过期,导致大量请求同时访问数据库。
例子: 某个热门商品(如ID为1001的商品)缓存突然失效,导致大量用户同时请求该商品,直接访问数据库。
解决方案:
互斥锁:
逻辑过期:
问题描述:大量缓存同时失效,导致大量请求直接访问数据库,可能导致数据库崩溃。
例子: 假设在某个时间点,大量商品缓存同时失效(如午夜时分所有商品缓存都设置为24小时过期),导致大量请求直接访问数据库。
解决方案:
设置不同的过期时间:
多级缓存:
限流和降级:
12 回答5.8k 阅读
2 回答3.2k 阅读✓ 已解决
3 回答6.9k 阅读✓ 已解决
3 回答3k 阅读✓ 已解决
5 回答4.6k 阅读
3 回答4.4k 阅读
3 回答1.2k 阅读
点击这里查看解决办法。