SpringBoot 2.x 之后,默认采用 Lettuce 作为 Redis 的连接客户端。当然,我们依然可以强制切换回熟悉的 Jedis。下面介绍具体的配置步骤。
基本配置
1. 依赖管理
与 Lettuce 不同,使用 Jedis 需要额外引入 Jedis 包及其依赖池。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
</dependencies>
2. 配置文件
Redis 的基础配置大同小异,区别主要在于线程池参数的设置。在 application.yml 中添加如下配置:
spring:
redis:
host: 127.0.0.1
port: 6379
password:
database: 0
jedis:
pool:
max-idle: 6
max-active: 32
max-wait: 100
min-idle: 4
3. 自定义连接工厂
核心在于定义一个 RedisConnectionFactory 的 Bean,以此覆盖默认配置,确保底层连接使用的是 Jedis 客户端。
@Configuration
public class RedisAutoConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory(JedisPoolConfig jedisPool, RedisStandaloneConfiguration jedisConfig) {
JedisConnectionFactory connectionFactory = new JedisConnectionFactory(jedisConfig);
connectionFactory.setPoolConfig(jedisPool);
return connectionFactory;
}
@Configuration
public static class JedisConf {
@Value("${spring.redis.host:127.0.0.1}")
private String host;
@Value("${spring.redis.port:6379}")
private Integer port;
@Value("${spring.redis.password:}")
private String password;
@Value("${spring.redis.database:0}")
private Integer database;
@Value("${spring.redis.jedis.pool.max-active:8}")
private Integer maxActive;
@Value("${spring.redis.jedis.pool.max-idle:8}")
private Integer maxIdle;
@Value("${spring.redis.jedis.pool.max-wait:-1}")
private Long maxWait;
@Value("${spring.redis.jedis.pool.min-idle:0}")
private Integer minIdle;
@Bean
public JedisPoolConfig jedisPool() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxWaitMillis(maxWait);
jedisPoolConfig.setMaxTotal(maxActive);
jedisPoolConfig.setMinIdle(minIdle);
return jedisPoolConfig;
}
@Bean
public RedisStandaloneConfiguration jedisConfig() {
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
config.setHostName(host);
config.setPort(port);
config.setDatabase(database);
config.setPassword(RedisPassword.of(password));
return config;
}
}
}
4. 验证结果
测试时,只需检查 RedisTemplate 实际使用的连接工厂类是否为 JedisConnectionFactory 即可。如果配置正确,运行时日志或调试信息会显示底层的连接实现已切换。


