【Springboot] Springboot2統合は、階段状ピットのRedis

今日では、Springboot2統合Redisの時間で、従来の方法の問題点の番号から始まります。チェックはデフォルトのRedisクライアントとしてSpringboot2使用レタスを知っています。コンフィギュレーション・レタス・プールの設定ファイル、他の構成パラメータjedisので。Jedisクライアントは、手動ポンポンファイルに必要なjedisを自分の信頼を追加したいと思います。

Redisの:
    データベース:0 
    ホスト:192.1681.210 
    ポート:6379 
    パスワード:パスワードの
    レタス:
      プール:
        最大 -active:8 
        最大 -idle:8  -idle:0

もう一つの問題は、おそらく、エラーを報告します終了します 

ClassNotFoundException:org.apache.commons.pool2.impl.GenericObjectPoolConfig

あなたは頼りにする必要が手動コモンズプールを追加します

<! - Redisのレタスプール需要这个依赖- > 
        < 依存> 
            < groupIdを> org.apache.commons </ groupIdを> 
            < たartifactId >コモンズ-POOL2 </ たartifactId > 
            < バージョン> 2.6.2 </ バージョン> 
        </ 依存関係>

 

最後の質問は、次のコードを使用して、カスタムRedisTempelate時間であるSpringコンテナがRedisConnectionFactoryを見つけることができません文句を言うだろう 

@Configuration 
@AutoConfigureAfter(RedisAutoConfiguration。クラスパブリック クラスRedisConfig { 

    @Bean 
    公共 RedisTemplate <オブジェクト、オブジェクト> redisTemplate(RedisConnectionFactory redisConnectionFactory){ 
        RedisTemplate <オブジェクト、オブジェクト>テンプレート= 新しい RedisTemplate <> (); 
        template.setConnectionFactory(redisConnectionFactory)。
        Jackson2JsonRedisSerializer <オブジェクト> redisSerializer = 新しい Jackson2JsonRedisSerializer <>(オブジェクト。クラス); 
        ObjectMapperマッパー = 新しいです ObjectMapper();
        mapper.setVisibility(PropertyAccessor.ALL、JsonAutoDetect.Visibility.ANY)。
        redisSerializer.setObjectMapper(マッパー)
        template.setValueSerializer(redisSerializer)。

        template.setKeySerializer(新しいStringRedisSerializer()); 
        template.afterPropertiesSet(); 

        リターンテンプレート。
    } 
}

 

 

 

デフォルトの設定Redisのクラスでも豆を使用していますので、しかし実際には、このBeanは、そこにあります。アッププロジェクトと実行がエラーで、RedisConnectionFactoryが必要です

 

 

最後に、とき自動注入は、この問題を解決するために、デフォルトRedisTemplateのプロパティを変更します。

@Component
public class RedisCenter {

    private RedisTemplate<Object, Object> redisTemplate;

    public void expire(Object key, Object value, long time, TimeUnit unit) {
        redisTemplate.opsForValue().set(key, value, time, unit);
    }

    public Object get(Object key) {
        return redisTemplate.opsForValue().get(key);
    }


    @Autowired
    public void setRedisTemplate(RedisTemplate<Object, Object> redisTemplate) {
        Jackson2JsonRedisSerializer<Object> redisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper mapper = new ObjectMapper();
        mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        redisSerializer.setObjectMapper(mapper);
        redisTemplate.setValueSerializer(redisSerializer);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.afterPropertiesSet();
        this.redisTemplate = redisTemplate;
    }
}

おすすめ

転載: www.cnblogs.com/yeyeck/p/12164350.html