缓存穿透:
访问不存在的数据,导致大量请求打到数据库,造成数据库压力过大崩溃。
解决方案:
如果数据不存在,可以在缓存中记录一个空值,并设置一个较短的过期时间。
缓存雪崩:
缓存中大量key集中失效(过期或服务不可用),导致大量请求打到数据库。
解决方案:
使用缓存集群,保证缓存高可用。
缓存击穿:
某个热点key被并发查询,一旦key过期就会有大量请求打到数据库。
解决方案:
添加互斥锁,一个线程执行完后将数据放入缓存,其他线程访问时可直接从缓存取值;
对热点数据设置永不过期。