Skip to content

Commit b6cd2c9

Browse files
committed
Use Jedis rather than Lettuce as preferred Redis client
Salvatore has indicated that Jedis is his Java Redis client of choice. This commit updates the auto-configuration support, actuator and Redis starter accordingly. Completes #745
1 parent b20262c commit b6cd2c9

File tree

7 files changed

+42
-50
lines changed

7 files changed

+42
-50
lines changed

spring-boot-actuator/pom.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,6 @@
4848
<artifactId>metrics-core</artifactId>
4949
<optional>true</optional>
5050
</dependency>
51-
<dependency>
52-
<groupId>com.lambdaworks</groupId>
53-
<artifactId>lettuce</artifactId>
54-
<optional>true</optional>
55-
</dependency>
5651
<dependency>
5752
<groupId>javax.servlet</groupId>
5853
<artifactId>javax.servlet-api</artifactId>
@@ -108,6 +103,11 @@
108103
<artifactId>jolokia-core</artifactId>
109104
<optional>true</optional>
110105
</dependency>
106+
<dependency>
107+
<groupId>redis.clients</groupId>
108+
<artifactId>jedis</artifactId>
109+
<optional>true</optional>
110+
</dependency>
111111
<!-- Test -->
112112
<dependency>
113113
<groupId>ch.qos.logback</groupId>

spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/repository/redis/RedisServer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.junit.runner.Description;
2424
import org.junit.runners.model.Statement;
2525
import org.springframework.data.redis.connection.RedisConnectionFactory;
26-
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
26+
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
2727

2828
import static org.junit.Assert.fail;
2929

@@ -36,7 +36,7 @@ public class RedisServer implements TestRule {
3636

3737
private static final String EXTERNAL_SERVERS_REQUIRED = "EXTERNAL_SERVERS_REQUIRED";
3838

39-
protected LettuceConnectionFactory resource;
39+
protected JedisConnectionFactory resource;
4040

4141
private final String resourceDescription = "Redis ConnectionFactory";
4242

@@ -122,7 +122,7 @@ public RedisConnectionFactory getResource() {
122122

123123
/**
124124
* Perform cleanup of the {@link #resource} field, which is guaranteed to be non null.
125-
*
125+
*
126126
* @throws Exception any exception thrown by this method will be logged and swallowed
127127
*/
128128
protected void cleanupResource() throws Exception {
@@ -134,8 +134,8 @@ protected void cleanupResource() throws Exception {
134134
* {@link #resource} field with a valid resource and return normally, or throw an
135135
* exception.
136136
*/
137-
protected LettuceConnectionFactory obtainResource() throws Exception {
138-
LettuceConnectionFactory resource = new LettuceConnectionFactory();
137+
protected JedisConnectionFactory obtainResource() throws Exception {
138+
JedisConnectionFactory resource = new JedisConnectionFactory();
139139
resource.afterPropertiesSet();
140140
resource.getConnection().close();
141141
return resource;

spring-boot-autoconfigure/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@
147147
<optional>true</optional>
148148
</dependency>
149149
<dependency>
150-
<groupId>com.lambdaworks</groupId>
151-
<artifactId>lettuce</artifactId>
150+
<groupId>redis.clients</groupId>
151+
<artifactId>jedis</artifactId>
152152
<optional>true</optional>
153153
</dependency>
154154
<dependency>

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/redis/RedisAutoConfiguration.java

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,24 @@
2727
import org.springframework.boot.context.properties.EnableConfigurationProperties;
2828
import org.springframework.context.annotation.Bean;
2929
import org.springframework.context.annotation.Configuration;
30-
import org.springframework.data.redis.connection.PoolConfig;
3130
import org.springframework.data.redis.connection.RedisConnectionFactory;
32-
import org.springframework.data.redis.connection.lettuce.DefaultLettucePool;
33-
import org.springframework.data.redis.connection.lettuce.LettuceConnection;
34-
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
35-
import org.springframework.data.redis.connection.lettuce.LettucePool;
31+
import org.springframework.data.redis.connection.jedis.JedisConnection;
32+
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
3633
import org.springframework.data.redis.core.RedisOperations;
3734
import org.springframework.data.redis.core.RedisTemplate;
3835
import org.springframework.data.redis.core.StringRedisTemplate;
3936

40-
import com.lambdaworks.redis.RedisClient;
37+
import redis.clients.jedis.Jedis;
38+
import redis.clients.jedis.JedisPoolConfig;
4139

4240
/**
4341
* {@link EnableAutoConfiguration Auto-configuration} for Spring Data's Redis support.
44-
*
42+
*
4543
* @author Dave Syer
44+
* @author Andy Wilkinson
4645
*/
4746
@Configuration
48-
@ConditionalOnClass({ LettuceConnection.class, RedisOperations.class, RedisClient.class })
47+
@ConditionalOnClass({ JedisConnection.class, RedisOperations.class, Jedis.class })
4948
@EnableConfigurationProperties
5049
public class RedisAutoConfiguration {
5150

@@ -59,8 +58,9 @@ protected static class RedisConnectionConfiguration {
5958
@Bean
6059
@ConditionalOnMissingBean
6160
RedisConnectionFactory redisConnectionFactory() throws UnknownHostException {
62-
LettuceConnectionFactory factory = new LettuceConnectionFactory(
63-
this.properties.getHost(), this.properties.getPort());
61+
JedisConnectionFactory factory = new JedisConnectionFactory();
62+
factory.setHostName(this.properties.getHost());
63+
factory.setPort(this.properties.getPort());
6464
if (this.properties.getPassword() != null) {
6565
factory.setPassword(this.properties.getPassword());
6666
}
@@ -80,35 +80,27 @@ protected static class RedisPooledConnectionConfiguration {
8080
@ConditionalOnMissingBean
8181
RedisConnectionFactory redisConnectionFactory() throws UnknownHostException {
8282
if (this.properties.getPool() != null) {
83-
LettuceConnectionFactory factory = new LettuceConnectionFactory(
84-
lettucePool());
83+
JedisConnectionFactory factory = new JedisConnectionFactory(
84+
jedisPoolConfig());
8585
return factory;
8686
}
87-
LettuceConnectionFactory factory = new LettuceConnectionFactory(
88-
this.properties.getHost(), this.properties.getPort());
87+
JedisConnectionFactory factory = new JedisConnectionFactory();
88+
factory.setHostName(this.properties.getHost());
89+
factory.setPort(this.properties.getPort());
8990
if (this.properties.getPassword() != null) {
9091
factory.setPassword(this.properties.getPassword());
9192
}
9293
return factory;
9394
}
9495

95-
@Bean
96-
@ConditionalOnMissingBean
97-
public LettucePool lettucePool() {
98-
return new DefaultLettucePool(this.properties.getHost(),
99-
this.properties.getPort(), poolConfig());
100-
}
101-
102-
private PoolConfig poolConfig() {
103-
PoolConfig pool = new PoolConfig();
96+
private JedisPoolConfig jedisPoolConfig() {
97+
JedisPoolConfig config = new JedisPoolConfig();
10498
RedisProperties.Pool props = this.properties.getPool();
105-
if (props != null) {
106-
pool.setMaxActive(props.getMaxActive());
107-
pool.setMaxIdle(props.getMaxIdle());
108-
pool.setMinIdle(props.getMinIdle());
109-
pool.setMaxWait(props.getMaxWait());
110-
}
111-
return pool;
99+
config.setMaxActive(props.getMaxActive());
100+
config.setMaxIdle(props.getMaxIdle());
101+
config.setMinIdle(props.getMinIdle());
102+
config.setMaxWait(props.getMaxWait());
103+
return config;
112104
}
113105

114106
}

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/redis/RedisAutoConfigurationTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
2121
import org.springframework.boot.test.EnvironmentTestUtils;
2222
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
23-
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
23+
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
2424
import org.springframework.data.redis.core.RedisOperations;
2525
import org.springframework.data.redis.core.StringRedisTemplate;
2626

@@ -51,7 +51,7 @@ public void testOverrideRedisConfiguration() throws Exception {
5151
this.context.register(RedisAutoConfiguration.class,
5252
PropertyPlaceholderAutoConfiguration.class);
5353
this.context.refresh();
54-
assertEquals("foo", this.context.getBean(LettuceConnectionFactory.class)
54+
assertEquals("foo", this.context.getBean(JedisConnectionFactory.class)
5555
.getHostName());
5656
}
5757

spring-boot-dependencies/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@
6565
<hsqldb.version>2.3.2</hsqldb.version>
6666
<jackson.version>2.3.3</jackson.version>
6767
<javassist.version>3.18.1-GA</javassist.version> <!-- Same as Hibernate -->
68+
<jedis.version>2.1.0</jedis.version>
6869
<jetty.version>8.1.14.v20131031</jetty.version>
6970
<joda-time.version>2.3</joda-time.version>
7071
<jolokia.version>1.2.0</jolokia.version>
7172
<jstl.version>1.2</jstl.version>
7273
<junit.version>4.11</junit.version>
73-
<lettuce.version>2.3.3</lettuce.version>
7474
<liquibase.version>3.1.1</liquibase.version>
7575
<log4j.version>1.2.17</log4j.version>
7676
<logback.version>1.1.2</logback.version>
@@ -155,9 +155,9 @@
155155
<version>${commons-pool.version}</version>
156156
</dependency>
157157
<dependency>
158-
<groupId>com.lambdaworks</groupId>
159-
<artifactId>lettuce</artifactId>
160-
<version>${lettuce.version}</version>
158+
<groupId>redis.clients</groupId>
159+
<artifactId>jedis</artifactId>
160+
<version>${jedis.version}</version>
161161
</dependency>
162162
<dependency>
163163
<groupId>javax.servlet</groupId>

spring-boot-starters/spring-boot-starter-redis/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
<artifactId>spring-data-redis</artifactId>
2929
</dependency>
3030
<dependency>
31-
<groupId>com.lambdaworks</groupId>
32-
<artifactId>lettuce</artifactId>
31+
<groupId>redis.clients</groupId>
32+
<artifactId>jedis</artifactId>
3333
</dependency>
3434
</dependencies>
3535
</project>

0 commit comments

Comments
 (0)