缓存
本章介绍对 caching 和 的其他支持。@Cacheable
配置和使用
从技术上讲,缓存不是 spring-data 的一部分,而是直接在 Spring 核心中实现的。spring-data 包中的大多数数据库实现都不支持,因为无法存储任意数据。@Cacheable
Couchbase 同时支持二进制和 JSON 数据,因此您可以从同一个数据库中获取两者。
要使其正常工作,您需要添加 Comments 并配置 Bean:@EnableCaching
cacheManager
示例 1. 用于缓存
AbstractCouchbaseConfiguration
@Configuration
@EnableCaching
public class Config extends AbstractCouchbaseConfiguration {
// general methods
@Bean
public CouchbaseCacheManager cacheManager(CouchbaseTemplate couchbaseTemplate) throws Exception {
CouchbaseCacheManager.CouchbaseCacheManagerBuilder builder = CouchbaseCacheManager.CouchbaseCacheManagerBuilder
.fromConnectionFactory(couchbaseTemplate.getCouchbaseClientFactory());
builder.withCacheConfiguration("mySpringCache", CouchbaseCacheConfiguration.defaultCacheConfig());
return builder.build();
}
然后,可以在 annotation 上使用该标识符来标识要使用的缓存管理器(您可以配置多个)。persistent
@Cacheable
设置完成后,您可以使用注释对每个方法进行注释,以透明方式将其缓存在 couchbase 存储桶中。您还可以自定义密钥的生成方式。@Cacheable
示例 2.缓存示例
@Cacheable(value="persistent", key="'longrunsim-'+#time")
public String simulateLongRun(long time) {
try {
Thread.sleep(time);
} catch(Exception ex) {
System.out.println("This shouldnt happen...");
}
return "I've slept " + time + " miliseconds.;
}
如果多次运行该方法,则会看到首先发生一个 set 操作,然后是多个 get 操作,并且没有睡眠时间(这假装了昂贵的执行)。你可以存储任何你想要的东西,如果它是 JSON,你当然可以通过视图访问它并在 Web UI 中查看它。
请注意,要使用 cache.clear() 或 cache.invalidate(),存储桶必须具有主键。