面试题答案
一键面试基于数据读写频率
- 高读低写:
- 缓存更新频率可以相对较低。因为读操作频繁,写操作少,缓存中的数据在较长时间内是有效的。可以设置一个较长的固定缓存过期时间,例如数小时甚至一天。这样既能满足大量读请求,又不会因频繁更新缓存而增加系统开销。
- 也可以采用惰性更新策略,即当读操作发现缓存过期或不存在时,再从MySQL中读取数据并更新缓存。
- 高读高写:
- 采用主动更新策略,在写操作完成后立即更新缓存。但为了避免更新缓存时大量读请求的等待,可以采用异步更新方式,通过消息队列等机制将更新缓存的任务异步处理。
- 还可以缩短缓存过期时间,比如几分钟甚至几十秒,让缓存能更及时地反映数据库的变化。
- 低读低写:
- 缓存更新频率可以很低,例如每天或每周更新一次。可以采用定时任务的方式,在系统低峰期从MySQL中批量读取数据更新缓存。
基于业务场景
- 实时性要求高的业务:
- 如金融交易数据展示,缓存更新频率要极高。写操作后需立即同步更新缓存,甚至可以使用双写一致性方案,先更新数据库,再更新缓存,确保数据一致性。读操作尽量从缓存获取,即使缓存过期,也应快速从数据库读取并更新缓存,以保证业务数据的实时性。
- 实时性要求低的业务:
- 如一些历史数据展示场景,缓存更新频率可以低,例如每隔数小时或一天更新一次。可以利用MySQL的Binlog来异步更新缓存,当Binlog记录有数据变更时,通过解析Binlog来更新缓存,减少对业务流程的影响。