長春火車站什么時候通車湖南網(wǎng)站優(yōu)化
luttuce 和redisson配置過程中實際上是獨立的,他們兩個可以同時集成,但是沒有直接相關(guān)關(guān)系,配置相對獨立。
所以分為Lettuce 和 Redisson 兩套配置
父pom
<!-- Spring Data Redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.3.11.RELEASE</version></dependency><!--連接池 不集成redisTempate配置工廠類會報錯--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.4.2</version></dependency><!-- Redisson --><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-data-22</artifactId><version>3.23.3</version></dependency>
子pom
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-data-22</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency>
lettuce
單機模式
cluster集群模式
lettuce yaml配置
配置文件
@Configuration
public class RedisConfig {@BeanRedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory){RedisTemplate redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(lettuceConnectionFactory);// 使用Jackson2JsonRedisSerializer 替換默認的JDKSerializationRedisSerializer 來序列化和反序列化redis 的value值Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);// hash的value序列化方式采用jacksonredisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.afterPropertiesSet();return redisTemplate;}
}
Redisson
單機模式
新建yaml文件:
singleServerConfig:# 連接空閑超時,單位:毫秒idleConnectionTimeout: 10000# 連接超時,單位:毫秒connectTimeout: 10000# 命令等待超時,單位:毫秒 默認3000timeout: 3000# 命令失敗重試次數(shù)retryAttempts: 3# 命令重試發(fā)送時間間隔,單位:毫秒retryInterval: 1500# 無密碼則設(shè)置 nullpassword: 123456# 單個連接最大訂閱數(shù)量subscriptionsPerConnection: 5# 客戶端名稱clientName: null# redis 節(jié)點地址address: "redis://127.0.0.1:6379"# 從節(jié)點發(fā)布和訂閱連接的最小空閑連接數(shù)subscriptionConnectionMinimumIdleSize: 1# 發(fā)布和訂閱連接池大小subscriptionConnectionPoolSize: 50# 發(fā)布和訂閱連接的最小空閑連接數(shù)connectionMinimumIdleSize: 32# 發(fā)布和訂閱連接池大小connectionPoolSize: 64# 數(shù)據(jù)庫編號database: 10# DNS監(jiān)測時間間隔,單位:毫秒 在啟用該功能以后,Redisson將會監(jiān)測DNS的變化情況dnsMonitoringInterval: 5000
threads: 0
nettyThreads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}
transportMode: "NIO"
集群模式
新建yaml文件:
clusterServersConfig:idleConnectionTimeout: 10000connectTimeout: 10000timeout: 3000retryAttempts: 3retryInterval: 1500password: xxxxsubscriptionsPerConnection: 5clientName: nullloadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}slaveSubscriptionConnectionMinimumIdleSize: 1slaveSubscriptionConnectionPoolSize: 50slaveConnectionMinimumIdleSize: 32slaveConnectionPoolSize: 64masterConnectionMinimumIdleSize: 32masterConnectionPoolSize: 64readMode: "SLAVE"nodeAddresses:- "redis://xxx:6379"- "redis://xxx:6379"- "redis://xxx:6379"- "redis://xxx:6379"- "redis://xxx:6379"- "redis://xxx:6379"- "redis://xxx:6379"- "redis://xxx:6379"- "redis://xxx:6379"- "redis://xxx:6379"- "redis://xxx:6379"- "redis://xxx:6379"scanInterval: 1000
threads: 0
nettyThreads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}
"transportMode":"NIO"
redisson配置文件
@Configuration
public class RedissonConfig {@Value("${spring.profiles.active}")private String active;@Bean(destroyMethod="shutdown")public RedissonClient redissonClient() throws IOException {// 開發(fā)環(huán)境-單機模式if ("dev".equals(active)){Config config = Config.fromYAML(RedissonConfig.class.getClassLoader().getResource("redisson-single-dev.yaml"));return Redisson.create(config);}// 測試環(huán)境-測試cluster集群模式if ("test".equals(active)){Config config = Config.fromYAML(RedissonConfig.class.getClassLoader().getResource("redisson-cluster-test.yaml"));return Redisson.create(config);}// 開發(fā)環(huán)境-正式cluster集群模式if ("online".equals(active)){Config config = Config.fromYAML(RedissonConfig.class.getClassLoader().getResource("redisson-cluster-online.yaml"));return Redisson.create(config);}return null;}
}