面试题答案
一键面试缓存预热
- 策略描述:在系统正式上线或高并发请求来临之前,提前将热点数据加载到缓存中。这样当实际请求到达时,就可以直接从缓存获取数据,避免大量请求同时穿透到后端数据库,减少数据库压力。
- 适用场景:适用于有明显业务高峰时段的系统,例如电商的促销活动、抢票场景等。在活动开始前,通过缓存预热将商品信息、活动规则等热点数据提前加载到缓存,确保活动开始时系统能快速响应。
缓存分片
- 策略描述:将缓存数据按照一定的规则(如哈希算法)分散存储在多个缓存节点上。每个节点只负责存储部分数据,当有数据请求时,通过相同的规则计算出该数据所在的节点,然后从对应的节点获取数据。
- 适用场景:适用于数据量较大且热点数据分布较为均匀的场景。例如大型社交平台的用户信息缓存,通过对用户ID进行哈希分片,将不同用户的信息分散到多个缓存节点,提高缓存的读写性能和扩展性。
读写分离
- 策略描述:对于热点数据的读取和写入操作,分别使用不同的缓存机制或节点。读操作可以使用专门的读缓存,通过多副本等方式提高读取性能;写操作则直接写入到持久化存储(如数据库),并异步更新读缓存。
- 适用场景:适用于读多写少的场景,如新闻资讯类网站,大量用户会读取新闻内容,但新闻发布相对较少。通过读写分离,可以有效提高读操作的响应速度,同时保证数据的一致性。
本地缓存
- 策略描述:在应用服务器本地存储一部分热点数据。这样,应用在处理请求时,首先从本地缓存查找数据,如果命中则直接返回,减少对分布式缓存的请求次数,降低网络开销。
- 适用场景:适用于应用服务器内存充足且热点数据相对固定的场景。例如一些配置信息、字典数据等,这些数据变动频率低,使用本地缓存可以显著提高应用的响应速度。
缓存降级
- 策略描述:当分布式缓存出现故障或性能下降时,为了保证系统的基本可用,暂时使用默认值、兜底数据或从其他替代数据源获取数据。
- 适用场景:适用于对系统可用性要求极高的场景,如金融交易系统。在缓存故障时,通过缓存降级返回兜底数据,避免因缓存问题导致交易无法进行,保证系统的基本功能正常运行。