カスタムReidsCacheManagerのSpringboot-2.0バージョンの変更

カスタム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コンストラクター

img_73b813405fec4738f7d682c11c3efb6e.png

バージョン2.0 CacheManagerコンストラクター

img_dcf19672d9b26050fdfc72f3f1ecb640.png

RedisCacheWriterRedisの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ストレージをアノテーションの形式で直接実装できます。追加の構成を記述する必要はありません。

81件のオリジナル記事を公開 Like1 訪問数30,000+

おすすめ

転載: blog.csdn.net/xiaoanzi123/article/details/105432174