Maven依赖

1
2
3
4
5
6
7
8
9
10
11
12
<!-- redis 缓存操作 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- pool 对象池 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>

配置项详解

在 Spring Boot 中,通过 spring.data.redis.lettuce 配置项,可以对 Lettuce Redis 客户端进行配置。Lettuce 是 Spring Data Redis 默认使用的 Redis 客户端,支持高级的 Redis 功能和异步操作。

常见的 spring.data.redis.lettuce 配置项

以下是 spring.data.redis.lettuce 相关的配置项及其含义:

  1. spring.data.redis.lettuce.pool: 配置连接池的相关参数(默认情况下,Lettuce 使用的是非阻塞连接池)。包括以下子配置项:
    • spring.data.redis.lettuce.pool.max-active: 连接池中最大的活跃连接数。默认值为 8。设置为 -1 表示不限制。
    • spring.data.redis.lettuce.pool.max-idle: 连接池中最大的空闲连接数。默认值为 8
    • spring.data.redis.lettuce.pool.min-idle: 连接池中最小的空闲连接数。默认值为 0
    • spring.data.redis.lettuce.pool.max-wait: 连接池中连接的最大等待时间。默认值为 -1ms,表示无限等待。
  2. spring.data.redis.lettuce.shutdown-timeout: 客户端关闭时的超时时间。默认值为 100ms。在应用关闭时,如果有连接正在使用,该超时时间将决定应用关闭的延迟时间。
  3. spring.data.redis.lettuce.client-name: 设置 Redis 客户端的名称。可以在 Redis 的 CLIENT LIST 命令中看到这个名称。
  4. spring.data.redis.lettuce.shutdown-quiet-period: 关闭客户端连接的安静期(即在关闭前等待的时间)。默认值为 2s
  5. spring.data.redis.lettuce.shutdown-timeout: 关闭客户端连接的总超时时间。默认值为 100ms

配置项的合理设置

合理的配置取决于你的应用场景和 Redis 的使用模式:

  • max-active:
    • 如果你的应用是高并发的,需要处理大量的并发请求,可以将 max-active 设置为较高的值(如 50100),以允许更多的并发连接。
    • 如果你有多个 Redis 客户端实例,考虑不要设置过高,以避免 Redis 服务器负载过重。
  • max-idle:
    • 可以根据应用的连接使用情况调整。例如,如果你的应用在高峰期有较多的连接,max-idle 可以设置为一个较大的值(如 20),这样在低峰期也能保持一些预备的连接。
  • min-idle:
    • min-idle 可以设置为应用的最小并发量。例如,如果你的应用通常至少有 5 个并发连接,min-idle 可以设置为 5,以确保连接池中始终有足够的空闲连接。
  • max-wait:
    • 如果应用需要快速响应,可以设置 max-wait 为一个较低的值(如 500ms)。如果连接获取超时,应用可以快速响应错误。
  • shutdown-timeout:
    • 在应用关闭时,如果有很多正在使用的连接,可以适当增加 shutdown-timeout(如 500ms1000ms),以确保连接能够正常关闭。
  • client-name:
    • 设置 client-name 主要是为了方便监控和调试。在大型系统中,可以将 client-name 设置为应用实例的名称或标识符,以便在 Redis 服务器中区分不同的客户端。

示例配置

以下是一个示例的 application.yml 配置:

1
2
3
4
5
6
7
8
9
10
11
spring:
data:
redis:
lettuce:
pool:
max-active: 50
max-idle: 20
min-idle: 5
max-wait: 1000ms
shutdown-timeout: 1000ms
client-name: my-app-redis-client

总结

合理配置 spring.data.redis.lettuce 的各个参数可以帮助优化 Redis 的性能,尤其是在高并发的场景下。你可以根据应用的具体需求和 Redis 的使用模式调整这些参数,确保连接池的大小、等待时间等设置符合实际业务场景。