适合缓存的场景
访问频率高、读多写少、一致性要求低
缓存击穿
缓存在某个时间点某个key过期,这个时候大量的并发请求这个key过来,直接查询数据库把DB压垮。
解决方案:
- 定时器:elastic-job、xxl-job
- 多级缓存 nginx一级缓存、redis二级缓存、定时更新缓存
- 零点洪峰时,采用rabbitmq队列术
缓存穿透
缓存中一直不存在,就直接查数据库了。
解决方案:查询为空还是要设置空到redis ,布隆过滤器
缓存雪崩
redis缓存层崩掉了,导致都到了数据库。
解决方案:
- 缓存高可用 redis-cluster和redis-sentinel
- nginx限流和微服务网关限流 hystrix
- 数据预热 提前加载缓存
- nginx队列或者rabbitmq队列 消峰
- 加锁、防止大量请求直接访问数据库
- 多级缓存 nginx +redis