1、热点数据的发现
2、缓存雪崩
2.1、什么是缓存雪崩?
缓存雪崩就是Redis的大量热点数据同时过期(失效),因为设置了相同的过期时间,刚好这个时候Redis请求
的并发量又很大,就会导致所有的请求落到数据库。
2.2、解决方案
-
加互斥锁或者使用队列,针对同一个key只允许一个线程到数据库查询
-
缓存定时预先更新,避免同时失效
-
通过加随机数,使key在不同的时间过期
-
缓存永不过期
3、缓存穿透
3.1、什么是缓存击穿?
缓存击穿是请求中查询的key,在缓存中不存在,同时在数据库中也不存在。这样就导致每次请求都会查询数据库。从而导致数据库压力过大而宕机。
3.2、解决方案
- 缓存不存在的key。就是请求中的key,如果在缓存中不存在,并且在数据库中不存在,则将key存在缓存中,这样下次直接取缓存就好。(会导致缓存存在很多无效key)
- 使用布隆过滤器。