Java21 + SpringBoot3整合Redis,使用Lettuce连接池,推荐连接池参数配置,封装Redis操作
    		       		warning:
    		            这篇文章距离上次修改已过424天,其中的内容可能已经有所变动。
    		        
        		                
                
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服务。
评论已关闭