Java21 + SpringBoot3整合Redis,使用Lettuce连接池,推荐连接池参数配置,封装Redis操作
import io.lettuce.core.ReadFrom;
import io.lettuce.core.resource.DefaultClientResources;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
public LettuceConnectionFactory redisConnectionFactory() {
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
.useSsl()
.readFrom(ReadFrom.MASTER_PREFERRED)
.build();
LettuceConnectionFactory factory = new LettuceConnectionFactory();
factory.setClientResources(DefaultClientResources.create());
factory.setClientConfiguration(clientConfig);
factory.setShutdownTimeout(0);
factory.setUseSsl(true);
factory.setVerifyPeer(false);
factory.afterPropertiesSet(); // 初始化连接工厂
return factory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory connectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
// 使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
template.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
// 使用StringRedisSerializer来序列化和反序列化redis的key值
template.setKeySerializer(new StringRedisSerializer());
// 设置hash key 和 value 的序列化方式
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
template.afterPropertiesSet();
return template;
}
}
这段代码定义了一个配置类RedisConfig
,其中包含了redisConnectionFactory
和redisTemplate
两个Bean,分别用于创建Lettuce连接工厂和Redis模板。它使用了Lettuce的SSL和读取策略,并且配置了默认的序列化方式。这样,开发者可以直接通过@Autowired
注入这些Bean来使用Redis服务。
评论已关闭