SoFunction
Updated on 2025-04-20

A complete guide to configuring a Redis connection pool in SpringBoot

1. Add dependencies

Add the following dependencies to the file:

<dependencies>
    <dependency>
        <groupId></groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId></groupId>
        <artifactId>commons-pool2</artifactId>
    </dependency>
</dependencies>

2. Configure Redis connection pool

(I) Configure class through Java

Create a configuration class that defines Redis connection factory and connection pool configuration:

import .;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;

@EnableCaching
@Configuration
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public LettuceConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        ("localhost");
        (6379);

        GenericObjectPoolConfig&lt;Object&gt; poolConfig = new GenericObjectPoolConfig&lt;&gt;();
        (10); // Maximum number of connections        (5); // Maximum number of idle connections        (1); // Minimum number of idle connections        (2000); // Get the maximum waiting time for the connection
        LettucePoolingClientConfiguration poolingClientConfig = ()
                .poolConfig(poolConfig)
                .build();

        return new LettuceConnectionFactory(redisStandaloneConfiguration, poolingClientConfig);
    }

    @Bean
    public RedisTemplate&lt;String, Object&gt; redisTemplate() {
        RedisTemplate&lt;String, Object&gt; template = new RedisTemplate&lt;&gt;();
        (redisConnectionFactory());
        (new StringRedisSerializer());
        (new StringRedisSerializer());
        return template;
    }
}

(II) Pass the document

Add the following configuration to the file:

=localhost
=6379
=0
-active=10
-idle=5
-idle=1
-wait=-1

3. Test Redis operations

Create a simple controller to test the basic operations of Redis:

import ;
import ;
import ;
import ;
import ;

@RestController
public class RedisController {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @GetMapping("/set")
    public String set(@RequestParam String key, @RequestParam String value) {
        ().set(key, value);
        return "Value set successfully";
    }

    @GetMapping("/get")
    public String get(@RequestParam String key) {
        return (String) ().get(key);
    }

    @GetMapping("/delete")
    public String delete(@RequestParam String key) {
        (key);
        return "Value deleted successfully";
    }
}

4. Complete sample code

(one)

<dependencies>
    <dependency>
        <groupId></groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId></groupId>
        <artifactId>commons-pool2</artifactId>
    </dependency>
</dependencies>

(two)

import .;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;

@EnableCaching
@Configuration
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public LettuceConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        ("localhost");
        (6379);

        GenericObjectPoolConfig&lt;Object&gt; poolConfig = new GenericObjectPoolConfig&lt;&gt;();
        (10); // Maximum number of connections        (5); // Maximum number of idle connections        (1); // Minimum number of idle connections        (2000); // Get the maximum waiting time for the connection
        LettucePoolingClientConfiguration poolingClientConfig = ()
                .poolConfig(poolConfig)
                .build();

        return new LettuceConnectionFactory(redisStandaloneConfiguration, poolingClientConfig);
    }

    @Bean
    public RedisTemplate&lt;String, Object&gt; redisTemplate() {
        RedisTemplate&lt;String, Object&gt; template = new RedisTemplate&lt;&gt;();
        (redisConnectionFactory());
        (new StringRedisSerializer());
        (new StringRedisSerializer());
        return template;
    }
}

(three)

=localhost
=6379
=0
-active=10
-idle=5
-idle=1
-wait=-1

(Four)

import ;
import ;
import ;
import ;
import ;

@RestController
public class RedisController {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @GetMapping("/set")
    public String set(@RequestParam String key, @RequestParam String value) {
        ().set(key, value);
        return "Value set successfully";
    }

    @GetMapping("/get")
    public String get(@RequestParam String key) {
        return (String) ().get(key);
    }

    @GetMapping("/delete")
    public String delete(@RequestParam String key) {
        (key);
        return "Value deleted successfully";
    }
}

Summarize

Through the above steps, you have successfully configured the Redis connection pool in Spring Boot. This configuration not only improves the performance of Redis operations, but also ensures efficient utilization of resources.

This is the article about this complete guide to configuring Redis connection pools in SpringBoot. For more information about configuring Redis connection pools in SpringBoot, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!