缓存穿透、缓存击穿、缓存雪崩、缓存预热
什么是缓存穿透?
缓存穿透是指用户恶意查询一个缓存中不存在的数据,导致请求直接穿透到数据库上,导致数据库压力过大甚至宕机
解决方法:
1.缓存空对象
2.限制缓存的TTL时间
3.利用布隆过滤器技术
4.设置热点数据预热
5.使用互斥锁进行访问控制
什么是缓存击穿?
缓存击穿是指热点key在某个时间点过期的时候,而恰好在这个时间点对这个key有大量的并发请求过来,从而导致大量的请求打到数据库上
解决方法:
1.延长缓存过期时间
2.使用布隆过滤器技术
3.采用互斥锁或分布锁的方式来控制缓存和数据库的并发访问
什么是缓存雪崩?
缓存雪崩指的是在某个时间内,缓存中大量的数据失效导致所有的请求都落到了数据库上,从而引发数据库短时间内的高并发压力
解决方法:
1.使用多级缓存架构
2.利用缓存的自动过期机制
3.对于热点数据可以采用手动缓存失效的方式来平滑地刷新缓存
4.在代码层面实现数据库的降级,避免缓存失效导致数据库访问压力过大
什么是缓存预热?
缓存预热是指在系统启动或者某个关键操作之前,提前将需要频繁访问的数据加载到缓存中,以提高系统的性能和响应速度。
缓存预热的处理方案包括:
手动预热:在系统启动或者某个关键操作之前,通过代码手动加载需要缓存的数据。
定时预热:通过定时任务,在系统空闲时定期加载需要缓存的数据。
懒加载预热:在第一次访问缓存数据时,如果数据不存在,则加载数据到缓存中。