下面我从测试角度简单说下Tair缓存、二级缓存和缓存测试点
首先我们要知道程序中为什么要引入缓存机制,在访问量大、对查询速度有一定要求并且数据实时性要求不是特别大时,会考虑引入缓存,提高查询速度、减少数据库链接和访问压力
Tair缓存
说明
为一个中间件,代替数据库做一个临时数据源
tair缓存数据
在增删改操作数据时,数据库数据成功更新后会同步到缓存中,并更新缓存刷新时间字段;定时任务会捞取缓存刷新时间大于指定时间的数据,重新把数据库的数据同步到缓存
对数据的增删改操作后,会同步数据到tair缓存中,保障tair缓存中数据的一致性
定时任务的更新,作为一种补偿机制,保障了异常情况下tair缓存中数据的一致性
最好后台配置可以手动同步、清空tair缓存的功能,方便实时操作
不可避免的风险
刚执行完定时任务,在对数据修改,同步数据到tair缓存时出现异常未能同步成功,此时会有一段时间数据不一致(取决于定时任务间隔时间),待定时任务重新执行后即可恢复
二级缓存
说明
Tair缓存的下一级
二级缓存数据
所有查询都先从二级缓存中查询,二级缓存中如果没有查询到数据,会从tair缓存中拿取数据并更新到二级缓存中,如果tair缓存也不存在时则根据规则制定默认值或者其他处理。二级缓存过期时间一般较短、数据存储量有限制,超出范围对最早数据进行淘汰处理
二级缓存中最开始都是没有数据的,在从tair缓存中查询到数据后才会同步到二级缓存,保证了数据一致性(如果tair缓存中没数据制定了默认值,二级缓存中就存的默认值)
二级缓存过期时间一般较短,可以相对及时从tair缓存中取新数据,保证了数据一致性
不可避免的风险
1.tair缓存中数据是旧数据,二级缓存获取后,此时就会有一段时间数据不一致
2.二级缓存获取数据时,tair服务突然挂了,此时就会有一段时间数据不一致
主要测试点
1.本地缓存中无数据,tair缓存中无数据
2.本地缓存中无数据,tair缓存中有数据
3.本地缓存中有数据
4.本地缓存中有数据,根据业务逻辑筛选数据
5.本地缓存过期、失效、淘汰
6.定时任务、同步数据至tair缓存
7.数据一致性检查
8.超时处理
9.如果存在多条关联数据时,需要关注临界值的情况(如:有三条关联数据,二级缓存大小刚好满了,把前两条数据淘汰了,此时怎么处理)