面试题答案
一键面试缓存雪崩现象及影响
- 现象:缓存雪崩是指在缓存系统中,大量的缓存数据在同一时间过期失效,导致大量原本应该从缓存获取的数据请求直接落到数据库上,如同雪崩一样给数据库带来巨大压力。这通常发生在缓存设置了相同的过期时间,或者缓存服务器出现大面积故障等情况下。
- 对系统影响:
- 数据库压力剧增:瞬间大量请求绕过缓存直接访问数据库,可能导致数据库连接池耗尽,数据库响应变慢甚至宕机。
- 系统性能下降:由于数据库处理能力有限,无法快速响应如此多的请求,整个系统的响应时间变长,用户体验变差,严重时可能导致系统不可用。
缓存预热策略
- 随机过期时间:
- 策略:在设置缓存过期时间时,不使用固定的过期时间,而是设置一个随机时间范围。例如,原本设置缓存过期时间为30分钟,可以改为在25 - 35分钟之间随机选择一个时间作为过期时间。这样可以避免大量缓存同时过期。
- 高并发场景可行性与优势:
- 可行性:在高并发场景下,通过这种随机化处理,能够有效分散缓存过期的时间点,避免集中过期情况。而且实现起来相对简单,对现有系统侵入性较小。
- 优势:极大地降低了缓存雪崩发生的概率,减少了对数据库的瞬间压力冲击。同时,由于随机时间分布相对均匀,不会因部分时间点集中过期而导致局部压力过大。
- 定时预热:
- 策略:在系统启动时或者业务低峰期,提前将热点数据加载到缓存中。可以通过定时任务,按照一定的时间间隔,将数据库中的热点数据读取并写入缓存。
- 高并发场景可行性与优势:
- 可行性:在高并发场景前提前预热缓存,能够保证在高并发请求到来时,大部分请求可以从缓存中获取数据,减轻数据库压力。通过合理安排定时任务的时间和频率,可以确保缓存数据的及时性和有效性。
- 优势:能够显著提高系统在高并发场景下的响应速度,因为热点数据已经在缓存中,减少了从数据库读取数据的时间。同时,通过合理控制预热频率,可以在保证缓存数据新鲜度的同时,避免对数据库造成过大压力。
- 二级缓存:
- 策略:使用两级缓存,一级缓存设置较短的过期时间,二级缓存设置较长的过期时间。当一级缓存失效时,先从二级缓存获取数据,如果二级缓存也失效,再从数据库读取数据并同时更新一级和二级缓存。
- 高并发场景可行性与优势:
- 可行性:在高并发场景下,一级缓存的短过期时间能够保证数据的相对新鲜度,二级缓存作为兜底,即使一级缓存大量失效,也能从二级缓存获取数据,减轻数据库压力。
- 优势:提供了一种更灵活的缓存失效处理机制,增强了系统在高并发下的容错能力。通过合理设置两级缓存的过期时间和更新策略,可以在保证数据新鲜度的同时,有效避免缓存雪崩。