我有一个使用缓存的批处理程序。一旦数据到达,最初缓存为空
它将接收的数据与先前接收的数据进行比较。
* - 如果未找到数据:添加到数据中
* - 如果找到但数据不同:更新数据
* - 如果找到的数据相同:数据已过滤掉
因此,在几次之后,随着数据不断增加,缓存大小也会增加。处理过程需要花费大量时间来处理。
我需要测试这整个情况,我有一些传入的数据,我需要重新生成这种情况。所以我需要在启动时填充缓存。有没有随机的方法呢?
我正在使用CacheBuilder进行缓存:
私人缓存> statesCache = .newBuilder() .maximumSize(1000) .build();
答案 0 :(得分:0)
我想,会有一些内置功能来做到这一点。后来我用for循环做了:
private static Cache> statesCache = CacheBuilder.newBuilder()// .maximumSize(1000).expireAfterAccess(24,TimeUnit.HOURS).build();
static {
for (int i = 0; i < 999; i++) {
Map<String, State> map = new HashMap<String, State>();
for (int j = 0; j < 50; j++) {
State randomState = new State() {
String VALUE = null;
String Id = null;
String DATA = null;
@Override
public void setVALUE(String VALUE) {
this.VALUE = VALUE;
}
@Override
public void setId(String Id) {
this.Id = Id;
}
@Override
public void setDATA(String DATA) {
this.DATA = DATA;
}
@Override
public String getVALUE() {
return VALUE;
}
@Override
public String getId() {
return Id;
}
@Override
public String getDATA() {
return DATA;
}
};
randomState.setDATA("Data_" + j);
randomState.setId("Id_" + j);
randomState.setVALUE("Value_" + j);
map.put("Id_" + j, randomState);
}
statesCache.put("BSTN_" + String.format("%04d", i), map);
}
}