1 在SpringBoot中常规的配置
<dependency>
<!--自带lettcute客户端-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
RedisProperties类会映射yaml文件中的redis相关配置
redis:
host: 10.20.5.47
port: 6379
password:
database: 0
lettuce:
pool:
# Whether to enable the pool. Enabled automatically if "commons-pool2" is available. With Jedis, pooling is implicitly enabled in sentinel mode and this setting only applies to single node setup. 项目里需要引入commons-pool2依赖
enabled: true
min-idle: 16
max-idle: 16
max-active: 64
max-wait: 3000
// 基于 spring boot starter data redis 3.0
@Configuration
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
public class RedisConfig {
/**
key、value序列化配置
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(RedisSerializer.string());
template.setHashKeySerializer(RedisSerializer.string());
template.setHashValueSerializer(RedisSerializer.json());
template.setValueSerializer(RedisSerializer.json());
return template;
}
/**
* 前提条件:redis使用lettuce作为连接池
* 配置RedisTemplate,读取数据库1的数据.
*/
@Bean("redisTemplate1")
public RedisTemplate<String, Object> redisTemplate1(LettuceConnectionFactory lettuceConnectionFactory) {
LettuceClientConfiguration clientConfiguration = lettuceConnectionFactory.getClientConfiguration();
RedisStandaloneConfiguration standaloneConfiguration = lettuceConnectionFactory.getStandaloneConfiguration();
//新创建RedisStandaloneConfiguration实例, 记得设置所有的字段
RedisStandaloneConfiguration newSandaloneConfiguration = new RedisStandaloneConfiguration(standaloneConfiguration.getHostName(), standaloneConfiguration.getPort());
//指定要连接的索引
newSandaloneConfiguration.setDatabase(1);
newSandaloneConfiguration.setUsername(standaloneConfiguration.getUsername());
newSandaloneConfiguration.setPassword(standaloneConfiguration.getPassword());
LettuceConnectionFactory lettuceConnectionFactory1 = new LettuceConnectionFactory(newSandaloneConfiguration, clientConfiguration);
// 不能忽略这个方法的调用,否则会出现异常。
lettuceConnectionFactory1.afterPropertiesSet();
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(lettuceConnectionFactory1);
template.setKeySerializer(RedisSerializer.string());
template.setHashKeySerializer(RedisSerializer.string());
template.setHashValueSerializer(RedisSerializer.json());
template.setValueSerializer(RedisSerializer.json());
return template;
}
}