目录
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做缓存使用一定要考虑缓存穿透,缓存击穿,缓存雪崩的原理和解决方案。