Jetcache(2)キャッシュポリシー


redisのサポート
jedis
jedisを選択してredisにアクセスします.対応するmaven artifactはjetcache-redisとjetcache-starter-redis(spring boot)です.一部の構成:
jetcache: 
  areaInCacheName: false
  remote:
    default:
      type: redis
      keyConvertor: fastjson
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      host: ${redis.host}
      port: ${redis.port}
      #sentinels: 127.0.0.1:26379 , 127.0.0.1:26380, 127.0.0.1:26381
      #masterName: mymaster

JedisPoolを直接操作する必要がある場合は、次の方法で入手できます.
@Bean(name = "defaultPool")
@DependsOn(RedisAutoConfiguration.AUTO_INIT_BEAN_NAME)//jetcache2.2+
//@DependsOn("redisAutoInit")//jetcache2.1
public JedisPoolFactory defaultPool() {
    return new JedisPoolFactory("remote.default", JedisPool.class);
}

次に、次の操作を行います.
@Autowired
private Pool defaultPool;

lettuce
対応するmaven artifactはjetcache-redis-lettuceとjetcache-starter-redis-lettuceです.lettuceはNettyを使用して単一の接続redisを確立するので、接続プールを構成する必要はありません.一部の構成:
jetcache: 
  areaInCacheName: false
  remote:
    default:
      type: redis.lettuce
      keyConvertor: fastjson
      uri: redis://127.0.0.1:6379/

sentinelを使用して自動マスター切り替えを行う場合、uriはredisに構成できます.sentinel://127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381/?sentinelMasterId=mymasterクラスタの場合:
jetcache: 
  areaInCacheName: false
  remote:
    default:
      type: redis.lettuce
      keyConvertor: fastjson
      uri:
        - redis://127.0.0.1:7000
        - redis://127.0.0.1:7001
        - redis://127.0.0.1:7002

lettuceのRedisClientを直接使用する必要がある場合:
@Bean(name = "defaultClient")
@DependsOn(RedisLettuceAutoConfiguration.AUTO_INIT_BEAN_NAME)
public LettuceFactory defaultClient() {
    return new LettuceFactory("remote.default", RedisClient.class);
}

次に、次の操作を行います.
@Autowired
private RedisClient defaultClient;

ローカルキャッシュ
ローカルキャッシュには現在2つの実装があります.自分がjetcache-coreのCacheAPIを使用している場合は、keyConvertorを指定しないことができます.この場合、ローカルキャッシュはequalsメソッドを使用してkeyを比較します.jetcache-annoの@Cached、@CreateCacheなどの注記を使用する場合は、keyConvertorを指定する必要があります.
LinkedHashMapCache
LinkedHashMapCacheはJetCacheで実現された最も簡単なCacheであり、LinkedHashMapを使用してLRU方式で淘汰される.
Cache cache = LinkedHashMapCacheBuilder.createLinkedHashMapCacheBuilder()
                .limit(100)
                .expireAfterWrite(200, TimeUnit.SECONDS)
                .buildCache();

CaffeineCache
Cache cache = CaffeineCacheBuilder.createCaffeineCacheBuilder()
                .limit(100)
                .expireAfterWrite(200, TimeUnit.SECONDS)
                .buildCache();