我如何在Java中缓存Couchbase文档?

问题描述 投票:-1回答:1

我必须缓存执行以下查询时返回的所有文档

select * from `contact` where type="org"

什么是最好的方法?

java couchbase
1个回答
1
投票

使用spring缓存并在您的应用程序配置类上添加@EnableCaching,并声明一个将返回CacheManager bean的方法,

import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;

private static final String cacheName ="YourCacheMap";
private static final String cacheManager ="AppCacheManager";

@Bean(name = "AppCacheManager")
public CacheManager cacheManager(){
    final SimpleCacheManager cacheManager = new SimpleCacheManager();
    final List<AbstractValueAdaptingCache> caches = new ArrayList<>();
    final ConcurrentMapCache cacheMap = new ConcurrentMapCache("YourCacheMap",
            CacheBuilder.newBuilder().expireAfterWrite(60, TimeUnit.MINUTES).maximumSize(100).build().asMap(), false);
    caches.add(cacheMap);
    cacheManager.setCaches(caches);
    return cacheManager;
}

并且在您的存储库服务类中,对要缓存的方法使用@Cacheable批注

@Cacheable(value = cacheName, cacheManager = cacheManager, key = "#p0"
        ,unless = "#result == null || #p0==null")
public List<YourDataType> getResult(String type) {
    // here you will return your results
    return new ArrayList<YourDataType>();
}
© www.soinside.com 2019 - 2024. All rights reserved.