此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Data Couchbase 5.5.2spring-doc.cadn.net.cn

缓存

本章介绍对缓存和@Cacheable.spring-doc.cadn.net.cn

配置和使用

从技术上讲,缓存不是 spring-data 的一部分,而是直接在 spring 核心中实现的。spring-data 包中的大多数数据库实现不支持@Cacheable,因为无法存储任意数据。spring-doc.cadn.net.cn

Couchbase 支持二进制和 JSON 数据,因此您可以从同一个数据库中获取两者。spring-doc.cadn.net.cn

要使其正常工作,您需要添加@EnableCaching注释并配置cacheManager豆:spring-doc.cadn.net.cn

示例 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();
  }

persistentidentifier 然后可以在@Cacheable注释来标识要使用的缓存管理器(您可以配置多个)。spring-doc.cadn.net.cn

设置完成后,您可以使用@Cacheable注释以透明地将其缓存在 Couchbase 存储桶中。您还可以自定义密钥的生成方式。spring-doc.cadn.net.cn

示例 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.;
}

如果多次运行该方法,则会看到首先发生一个设置作,然后是多个 get作,并且没有睡眠时间(这会伪造昂贵的执行)。你可以存储任何你想要的东西,如果它是 JSON,当然你可以通过视图访问它并在 Web UI 中查看它。spring-doc.cadn.net.cn

请注意,要使用 cache.clear() 或 cache.invalidate(),存储桶必须具有主键。spring-doc.cadn.net.cn