springboot2.0.xコールredis cluster
10994 ワード
一、背景業務背景はspringcloudにキャッシュ層を増やすことであり、redis clusterをキャッシュコンポーネントとして簡単に使用し、異なるキャッシュコンテナとキャッシュの期限切れ時間を設定し、キャッシュの自動リフレッシュに関与しない.二、工具spring boot 2.0.0;spring cloud Finchley.RELEASE; redis cluster 6.2三、流れ1.pomファイルのメインプロジェクトに関連する依存性
サービス・アイテムの依存関係
2.サービス項目のプロファイル情報
3.キャッシュ構成クラス
四、まとめ
<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
//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.