カスタムReidsCacheManagerのSpringboot-2.0バージョンの変更
転載記事のアドレス:https : //yq.aliyun.com/articles/650194 [転載と使用の方法についてご不明な点がございましたら、ご連絡ください。削除してください]
1.問題の発見
バージョン1.0では、次のようにredis cacheManagerを構成します。
//缓存管理器
@Bean
public CacheManager cacheManager(@SuppressWarnings("rawtypes") RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
//设置缓存过期时间
cacheManager.setDefaultExpiration(10000);
return cacheManager;
} //缓存管理器
ただし、2.0バージョンでは、RedisCacheManagerが1.0バージョンのpublic RedisCacheManager(RedisOperations redisOperations)
構築メソッドをキャンセルしたため、このコードはエラーを直接報告し、RedisTemplate
カスタマイズするためのパラメーターとして使用できなくなりましたCacheManager
。
2つのバージョンの違いを見てみましょう。
バージョン1.0 CacheManagerコンストラクター
バージョン2.0 CacheManagerコンストラクター
RedisCacheWriter
Redisのset、setnx、getなどのコマンドへのアクセスを提供し、複数のキャッシュで共有でき、Redisからのバイナリデータの書き込み/読み取りを担当します。
RedisCacheConfiguration
名前によれば、redis構成を提供していると考えることができます。
2. springboot2.0のCacheManagerカスタム構成
/**
* 缓存管理器
*/
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
//初始化一个RedisCacheWriter
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
//设置CacheManager的值序列化方式为json序列化
RedisSerializer<Object> jsonSerializer = new GenericJackson2JsonRedisSerializer();
RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair
.fromSerializer(jsonSerializer);
RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig()
.serializeValuesWith(pair);
//设置默认超过期时间是30秒
defaultCacheConfig.entryTtl(Duration.ofSeconds(30));
//初始化RedisCacheManager
return new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
}
上記のコードでCacheManager
は、値のシリアル化メソッドも設定されているため、この構成を使用すると、jsonのredisストレージをアノテーションの形式で直接実装できます。追加の構成を記述する必要はありません。