Guava缓存怎么写?

74 阅读1分钟

guva缓存写法非常简单,建议是Optional对象,防止缓存击穿的问题

如下的模板,expireAfterWrite 要比 refreshAfterWrite 长一点,因为refreshAfterWrite是自动刷新值,而expireAfterWrite是过期值,这样才能实现自动刷新缓存

private final LoadingCache<String, Optional<SYSConfigPO>> SYSConfigListKeyCache = CacheBuilder.newBuilder()
        .initialCapacity(150)
        .expireAfterWrite(6, TimeUnit.MINUTES)
        .refreshAfterWrite(4, TimeUnit.MINUTES)
        .concurrencyLevel(5)
        .recordStats()
        .build(new CacheLoader<String, Optional<SYSConfigPO>>() {
            @Override
            public Optional<SYSConfigPO> load(@Nonnull String type) {
                SYSConfigPO po = sysConfigMapper.selectOneByCKey(type);
                return Optional.ofNullable(po);
            }
        });