diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/JedisConnectionConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/JedisConnectionConfiguration.java index 8a02384d66c9..301ab40b4212 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/JedisConnectionConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/JedisConnectionConfiguration.java @@ -94,6 +94,9 @@ private JedisClientConfigurationBuilder applyProperties(JedisClientConfiguration Duration timeout = getProperties().getTimeout(); builder.readTimeout(timeout).connectTimeout(timeout); } + if (StringUtils.hasText(getProperties().getClientName())) { + builder.clientName(getProperties().getClientName()); + } return builder; } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.java index ce6642dc6e49..4ae272246ebb 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.java @@ -114,6 +114,9 @@ private LettuceClientConfigurationBuilder applyProperties( builder.shutdownTimeout(getProperties().getLettuce().getShutdownTimeout()); } } + if (StringUtils.hasText(getProperties().getClientName())) { + builder.clientName(getProperties().getClientName()); + } return builder; } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisProperties.java index a1976b12a7b2..42cf1c0523f4 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisProperties.java @@ -70,6 +70,11 @@ public class RedisProperties { */ private Duration timeout; + /** + * Configure a clientName to be set with CLIENT SETNAME. + */ + private String clientName; + private Sentinel sentinel; private Cluster cluster; @@ -134,6 +139,14 @@ public Duration getTimeout() { return this.timeout; } + public String getClientName() { + return this.clientName; + } + + public void setClientName(String clientName) { + this.clientName = clientName; + } + public Sentinel getSentinel() { return this.sentinel; } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationJedisTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationJedisTests.java index 310ad8875f79..d012fb660ed0 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationJedisTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationJedisTests.java @@ -134,6 +134,16 @@ public void testRedisConfigurationWithTimeout() { }); } + @Test + public void testRedisConfigurationWithClientName() { + this.contextRunner.withPropertyValues("spring.redis.host:foo", "spring.redis.client-name:spring-boot") + .run((context) -> { + JedisConnectionFactory cf = context.getBean(JedisConnectionFactory.class); + assertThat(cf.getHostName()).isEqualTo("foo"); + assertThat(cf.getClientName()).isEqualTo("spring-boot"); + }); + } + @Test public void testRedisConfigurationWithSentinel() { this.contextRunner diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationTests.java index 1aaf4008aa5a..68c4ffb08222 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationTests.java @@ -160,6 +160,16 @@ void testRedisConfigurationWithTimeout() { }); } + @Test + void testRedisConfigurationWithClientName() { + this.contextRunner.withPropertyValues("spring.redis.host:foo", "spring.redis.client-name:spring-boot") + .run((context) -> { + LettuceConnectionFactory cf = context.getBean(LettuceConnectionFactory.class); + assertThat(cf.getHostName()).isEqualTo("foo"); + assertThat(cf.getClientName()).isEqualTo("spring-boot"); + }); + } + @Test void testRedisConfigurationWithSentinel() { List sentinels = Arrays.asList("127.0.0.1:26379", "127.0.0.1:26380");