面试题答案
一键面试- 平衡原则
- 数据一致性角度:对于数据一致性要求高的场景,如涉及金额、重要业务状态等数据,缓存过期时间应设置较短。这样能保证数据在短时间内更新,减少缓存与数据库数据不一致的时间窗口。
- 缓存命中率角度:对于变动不频繁的数据,可设置较长的缓存过期时间,以提高缓存命中率,减少对数据库的查询压力。
- 举例
- 高一致性场景:假设一个电商系统的商品库存数据。商品库存对数据一致性要求极高,因为库存数量直接影响到商品能否正常售卖。可以设置较短的缓存过期时间,比如1 - 5分钟。例如使用Redis的
SET key value EX 300
命令(EX
后面的数字300表示300秒即5分钟过期)。这样即使库存数据发生变化,5分钟内缓存数据也会过期,下一次请求时会从数据库重新读取最新库存,保证了数据一致性。 - 兼顾缓存命中率场景:以电商系统的商品详情页数据为例,商品详情信息(如商品描述、品牌等)一般不会频繁变动。可以设置相对较长的缓存过期时间,如1 - 2天。例如使用
SET key value EX 172800
命令(EX
后面的数字172800表示172800秒即2天过期)。这样大部分时间内用户请求商品详情页时,都能从缓存中获取数据,提高了缓存命中率,减轻数据库压力,同时因为商品详情数据本身变动不频繁,所以也不会过多影响数据一致性。
- 高一致性场景:假设一个电商系统的商品库存数据。商品库存对数据一致性要求极高,因为库存数量直接影响到商品能否正常售卖。可以设置较短的缓存过期时间,比如1 - 5分钟。例如使用Redis的