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.47port: 6379password:database: 0lettuce: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: 16max-idle: 16max-active: 64max-wait: 3000
// 基于 spring boot starter data redis 3.0@Configuration
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
public class RedisConfig {/**key、value序列化配置*/@Beanpublic 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;}
}
Redis连接池参数配置建议
阿里云参考文档