Redis中的缓存击穿、缓存穿透和缓存雪崩是什么?
缓存击穿:指的是某个热点数据在缓存中失效,导致大量的请求直接访问数据库,此时,由于瞬时的高并发,可能导致数据库直接崩溃。
缓存穿透:指的是查询一个不存在的数据,缓存中没有相应的记录,每次请求都会去数据库中查询,造成数据库的负担加重。
缓存雪崩:指的是多个缓存数据在同一时间过期,导致大量的请求同时访问数据库,从而造成数据库瞬间负载激增。
解决方案
缓存击穿:
1.使用互斥锁,确保同一时间内只有一个请求可以去数据库查询并更新缓存。
2.热点数据永不过期。
缓存穿透:
1.使用布隆过滤器,过滤掉不存在的请求,避免直接访问数据库。
2.对于查询数据进行缓存,即使不存在的数据,也可以缓存一个标识,以减少对于数据库的请求。
缓存雪崩:
1.采用随机过期时间策略,避免多个数据同时过期。
2.采用双缓存策略,将数据同时缓存在俩层缓存中,减少数据库直接请求。