面试题答案
一键面试可能出现的一致性问题
- 缓存穿透:查询一个一定不存在的数据,由于缓存不命中,每次都会去查询数据库,若恶意大量请求,会对数据库造成压力,甚至压垮数据库。
- 缓存雪崩:大量缓存同时过期,导致大量请求直接访问数据库,可能使数据库瞬间压力过大而崩溃。
- 缓存击穿:热点数据缓存过期瞬间,大量并发请求同时访问,直接打到数据库,可能造成数据库压力剧增。
解决方案及优缺点
- 布隆过滤器解决缓存穿透
- 优点:能高效判断数据是否存在,极大减少数据库查询压力,占用内存空间小,查询效率高。
- 缺点:存在误判率,误判的数据实际不存在,但布隆过滤器会认为存在;增加了维护布隆过滤器的成本。
- 设置不同过期时间避免缓存雪崩
- 优点:实现简单,能有效避免大量缓存同时过期的情况,降低数据库瞬间压力。
- 缺点:无法精准控制缓存过期时间,可能导致部分数据在不合适的时间过期,影响业务准确性。
- 互斥锁解决缓存击穿
- 优点:能有效防止高并发下热点数据过期时大量请求同时访问数据库,保证数据库正常运行。
- 缺点:增加了锁的开销,性能有所下降;若锁的释放出现问题,可能导致死锁,影响系统可用性。