缓存穿透
原因:由于在缓存和数据库均会Miss的Key,导致每次请求会穿透缓存到数据库中
解决措施
将双Miss的key作为空对象放到缓存中,并给定过期时间
访问层拦截,在进入缓存查询前进行过滤
业务过滤
BloomFilter
查询/插入效率:时间/空间-O(1)
数据安全性
假阳性错误
不能删除元素
缓存击穿
原因:缓存在过期后到更新的这段时间内,在高并发场景所接受到的热Key请求都会击穿缓存到数据库中
解决措施
缓存永不过期
异步更新缓存
缓存更新设置在过期之前
互斥锁,缓存失效时保证唯一访问请求,缓存更新后释放锁,其他请求等待锁释放
缓存雪崩
原因:缓存在同一时间过期导致热Key大量请求数据库导致数据库雪崩连锁现象