Skip to content

Commit a01e651

Browse files
committed
Add 'client-name' property to specify a Redis client name.
gh-17315
1 parent 8730f32 commit a01e651

File tree

5 files changed

+51
-9
lines changed

5 files changed

+51
-9
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/JedisConnectionConfiguration.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,17 @@ private JedisClientConfiguration getJedisClientConfiguration(
8787
}
8888

8989
private JedisClientConfigurationBuilder applyProperties(JedisClientConfigurationBuilder builder) {
90-
if (getProperties().isSsl()) {
90+
RedisProperties properties = getProperties();
91+
if (properties.isSsl()) {
9192
builder.useSsl();
9293
}
93-
if (getProperties().getTimeout() != null) {
94-
Duration timeout = getProperties().getTimeout();
94+
if (properties.getTimeout() != null) {
95+
Duration timeout = properties.getTimeout();
9596
builder.readTimeout(timeout).connectTimeout(timeout);
9697
}
98+
if (StringUtils.hasText(properties.getClientName())) {
99+
builder.clientName(properties.getClientName());
100+
}
97101
return builder;
98102
}
99103

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,18 +102,22 @@ private LettuceClientConfigurationBuilder createBuilder(Pool pool) {
102102

103103
private LettuceClientConfigurationBuilder applyProperties(
104104
LettuceClientConfiguration.LettuceClientConfigurationBuilder builder) {
105-
if (getProperties().isSsl()) {
105+
RedisProperties properties = getProperties();
106+
if (properties.isSsl()) {
106107
builder.useSsl();
107108
}
108-
if (getProperties().getTimeout() != null) {
109-
builder.commandTimeout(getProperties().getTimeout());
109+
if (properties.getTimeout() != null) {
110+
builder.commandTimeout(properties.getTimeout());
110111
}
111-
if (getProperties().getLettuce() != null) {
112-
RedisProperties.Lettuce lettuce = getProperties().getLettuce();
112+
if (properties.getLettuce() != null) {
113+
RedisProperties.Lettuce lettuce = properties.getLettuce();
113114
if (lettuce.getShutdownTimeout() != null && !lettuce.getShutdownTimeout().isZero()) {
114-
builder.shutdownTimeout(getProperties().getLettuce().getShutdownTimeout());
115+
builder.shutdownTimeout(properties.getLettuce().getShutdownTimeout());
115116
}
116117
}
118+
if (StringUtils.hasText(properties.getClientName())) {
119+
builder.clientName(properties.getClientName());
120+
}
117121
return builder;
118122
}
119123

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisProperties.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ public class RedisProperties {
7070
*/
7171
private Duration timeout;
7272

73+
/**
74+
* Configure a clientName to be set with CLIENT SETNAME.
75+
*/
76+
private String clientName;
77+
7378
private Sentinel sentinel;
7479

7580
private Cluster cluster;
@@ -134,6 +139,14 @@ public Duration getTimeout() {
134139
return this.timeout;
135140
}
136141

142+
public String getClientName() {
143+
return this.clientName;
144+
}
145+
146+
public void setClientName(String clientName) {
147+
this.clientName = clientName;
148+
}
149+
137150
public Sentinel getSentinel() {
138151
return this.sentinel;
139152
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationJedisTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,16 @@ public void testRedisConfigurationWithTimeout() {
134134
});
135135
}
136136

137+
@Test
138+
public void testRedisConfigurationWithClientName() {
139+
this.contextRunner.withPropertyValues("spring.redis.host:foo", "spring.redis.client-name:spring-boot")
140+
.run((context) -> {
141+
JedisConnectionFactory cf = context.getBean(JedisConnectionFactory.class);
142+
assertThat(cf.getHostName()).isEqualTo("foo");
143+
assertThat(cf.getClientName()).isEqualTo("spring-boot");
144+
});
145+
}
146+
137147
@Test
138148
public void testRedisConfigurationWithSentinel() {
139149
this.contextRunner

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.springframework.context.annotation.Configuration;
3131
import org.springframework.data.redis.connection.RedisClusterConfiguration;
3232
import org.springframework.data.redis.connection.RedisNode;
33+
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
3334
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration.LettuceClientConfigurationBuilder;
3435
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
3536
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
@@ -160,6 +161,16 @@ void testRedisConfigurationWithTimeout() {
160161
});
161162
}
162163

164+
@Test
165+
void testRedisConfigurationWithClientName() {
166+
this.contextRunner.withPropertyValues("spring.redis.host:foo", "spring.redis.client-name:spring-boot")
167+
.run((context) -> {
168+
JedisConnectionFactory cf = context.getBean(JedisConnectionFactory.class);
169+
assertThat(cf.getHostName()).isEqualTo("foo");
170+
assertThat(cf.getClientName()).isEqualTo("spring-boot");
171+
});
172+
}
173+
163174
@Test
164175
void testRedisConfigurationWithSentinel() {
165176
List<String> sentinels = Arrays.asList("127.0.0.1:26379", "127.0.0.1:26380");

0 commit comments

Comments
 (0)