我需要在启动时填充缓存(CacheBuilder)。有没有随机的方法呢?

时间:2016-07-19 11:35:56

标签: java caching insert buffer

我有一个使用缓存的批处理程序。一旦数据到达,最初缓存为空 它将接收的数据与先前接收的数据进行比较。
     * - 如果未找到数据:添加到数据中      * - 如果找到但数据不同:更新数据
     * - 如果找到的数据相同:数据已过滤掉

因此,在几次之后,随着数据不断增加,缓存大小也会增加。处理过程需要花费大量时间来处理。

我需要测试这整个情况,我有一些传入的数据,我需要重新生成这种情况。所以我需要在启动时填充缓存。有没有随机的方法呢?

我正在使用CacheBuilder进行缓存:

私人缓存> statesCache = .newBuilder()             .maximumSize(1000)             .build();

1 个答案:

答案 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);
    }
}