面试题答案
一键面试1. 互斥锁策略
- 实现方式:当缓存过期时,先获取一个互斥锁(如分布式锁),只有获取到锁的请求才去查询数据库并更新缓存,其他请求等待锁释放后从缓存获取数据。
- 优点:简单易懂,能有效防止大量请求同时穿透到数据库。
- 缺点:引入了锁机制,增加了系统复杂度和性能开销。高并发下,锁竞争激烈,可能导致系统性能下降。
2. 热点数据永不过期策略
- 实现方式:对于热点数据,不设置过期时间,由后台定时任务或者数据库变更通知机制去更新缓存数据。
- 优点:彻底避免了缓存过期导致的缓存击穿问题,保证高并发下热点数据的访问性能。
- 缺点:缓存数据可能长时间不一致,直到后台更新缓存。而且后台更新逻辑实现复杂,可能出现数据更新不及时等问题。
3. 二级缓存策略
- 实现方式:设置主缓存和副缓存,主缓存设置较短过期时间,副缓存设置较长过期时间。主缓存过期时,先从副缓存获取数据,同时后台异步更新主缓存。
- 优点:能在一定程度上避免缓存击穿,减少对数据库的直接访问。而且不引入锁机制,对系统性能影响相对较小。
- 缺点:增加了缓存维护成本,需要管理两级缓存的一致性,并且副缓存数据也存在一定时间的不一致性。
4. 缓存预热策略
- 实现方式:系统启动时或在流量高峰来临前,提前将热点数据加载到缓存中,并设置合理的过期时间。
- 优点:有效避免在高并发场景下因缓存过期导致的缓存击穿问题,提高系统的初始响应速度。
- 缺点:需要提前预估热点数据,若预估不准确,可能导致部分数据缓存未命中。并且缓存预热时间和方式需要根据业务场景仔细调整,否则可能影响正常业务。