springboot2.0.xコールredis cluster

10994 ワード

一、背景業務背景はspringcloudにキャッシュ層を増やすことであり、redis clusterをキャッシュコンポーネントとして簡単に使用し、異なるキャッシュコンテナとキャッシュの期限切れ時間を設定し、キャッシュの自動リフレッシュに関与しない.二、工具spring boot 2.0.0;spring cloud Finchley.RELEASE; redis cluster 6.2三、流れ1.pomファイルのメインプロジェクトに関連する依存性
   
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.0.0.RELEASEversion>
        <relativePath/> 
    parent> 

サービス・アイテムの依存関係
    <properties>
        <spring-cloud.version>Finchley.RELEASEspring-cloud.version>
    properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                
                <version>${spring-cloud.version}version>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>
    <dependencies>
         <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-redisartifactId>
        dependency>
    dependencies>

2.サービス項目のプロファイル情報
  redis:
    cluster:
      nodes: 192.168.110.128:7000,192.168.110.128:7001,192.168.110.128:70002,192.168.110.128:7003,192.168.110.128:7004,192.168.110.128:7005
      #          springboot2.x      
      timeout: 15000ms
      #          springboot1.x       
      # timeout: 15000
      #                    
      max-redirects: 5
  cache:
    #       ,        
    cache-names:
    #     ,       ,      redis
    type: redis
    redis:
      #    null  ,   false
      cache-null-values: false
      #redis        ,  60000ms
      time-to-live: 60000ms
      #    key      ,   true
      use-key-prefix: false
      #    key   ,       true   
      key-prefix:
 massage:  
   data:
    name: mydefine
    #         ,       2m
    struct-live-to-time: 2
    #         ,       6m
    object-live-to-time: 6
    #        ,       30s
    default-live-to-time: 30

3.キャッシュ構成クラス
@Configuration
@EnableCaching
public class RedisClusterConfigSpringboot2x extends CachingConfigurerSupport {
    @Autowired
    private Environment environment;
    @Bean
    CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
        //         ,       2m
        RedisCacheConfiguration structServiceCache = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(environment.getProperty("massage.data.struct-live-to-time",Long.TYPE))).disableCachingNullValues().prefixKeysWith("StructServiceCache");
        //         ,       6m
             RedisCacheConfiguration objectServiceCache = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(environment.getProperty("massage.data.object-live-to-time",Long.TYPE))).disableCachingNullValues().prefixKeysWith("ObjectServiceCache");
        Map redisCacheConfigurationMap = new HashMap<>();
        redisCacheConfigurationMap.put("StructServiceCache", structServiceCache);
        redisCacheConfigurationMap.put("ObjectServiceCache", objectServiceCache);
        //     RedisCacheWriter
        RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory);


        //  CacheManager        JdkSerializationRedisSerializer,   RedisCacheConfiguration      StringRedisSerializer   key,JdkSerializationRedisSerializer   value,             
        //ClassLoader loader = this.getClass().getClassLoader();
        //JdkSerializationRedisSerializer jdkSerializer = new JdkSerializationRedisSerializer(loader);
        //RedisSerializationContext.SerializationPair pair = RedisSerializationContext.SerializationPair.fromSerializer(jdkSerializer);
        //RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(pair);


        RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig();
        //          30 ,       StructServiceCache ObjectServiceCache            
        defaultCacheConfig.entryTtl(Duration.ofSeconds(environment.getProperty("massage.data.default-live-to-time",Long.TYPE)));
        //   RedisCacheManager
        RedisCacheManager cacheManager = new RedisCacheManager(redisCacheWriter, defaultCacheConfig, redisCacheConfigurationMap);
        return cacheManager;
    }
4.       
    @Cacheable(value = "StructServiceCache",key="#root.methodName+#p0+#p1")
    public List<Map<String, Object>> getStructsByItems(String type, String item);

四、まとめ
springboot 1.x  2.x, redis        。1.x   jedis   , 2.x     lettuce.