目录

1.redis做缓存,会有哪些问题?

2.什么是缓存穿透?如果出现,解决方案是什么?  

3.什么是缓存击穿?如果出现,解决方案是什么?  

 4.什么是缓存雪崩?如果出现,解决方案是什么? 

5.缓存穿透,缓存击穿,缓存崩溃三者的区别和联系是什么?

总结


1.redis做缓存,会有哪些问题?

       redis做缓存可能会出现缓存穿透, 缓存击穿,缓存雪崩问题。问题程度有低到高。缓存穿透最轻,缓存雪崩最重。

2.什么是缓存穿透?如果出现,解决方案是什么?  

        用户请求的数据在缓存中不存在,在数据库中也不存在,导致每次请求都去数据库中查询,导致数据库服务压力大。

        解决方案:

        1.参数校验

        2.将无效的key放入缓存。可以解决高频,固定key的查询,不能解决key随机不存在的问题

        3.增加布隆过滤器。可以解决key随机不存在的问题。布隆过滤器,key不存在一定不存在,key存在不一定存在。

3.什么是缓存击穿?如果出现,解决方案是什么?  

        单个key缓存失效,大量请求过来,读缓存没有读到,全部打到数据库,数据库压力大,或者数据库崩溃。

        解决方案:

        1.数据过期,读写数据加锁

        2.热点数据永不过期(1.不设置过期时间 2.通过脚本定时刷新过期时间)

 4.什么是缓存雪崩?如果出现,解决方案是什么? 

        大量的key同时失效,导致大量的请求同时访问缓存,缓存查询不到,去数据库查询(数据库可能查询到也可能查询不到),数据库压力大或崩溃。

解决方案:

        1.对key的过期时间增加随机值

        2.如果redis挂掉,可以使用redis 集群

5.缓存穿透,缓存击穿,缓存崩溃三者的区别和联系是什么?

        缓存穿透是单个请求,缓存击穿和缓存雪崩是多个请求。缓存击穿是单个key失效,缓存雪崩是多个key同时失效。

总结

        redis做缓存使用一定要考虑缓存穿透,缓存击穿,缓存雪崩的原理和解决方案。