在我的 Spring 引导应用程序中哪里可以关闭 Lettuce Redis 连接?
Where can close a Lettuce Redis connection in my Spring Boot application?
我已经用这样的 Lettuce(io.lettuce.core.api) 配置初始化了 Spring 启动应用
@Configuration
class RedisConfiguration {
@Value("${spring.redis.host}")
private String redisHostname;
@Value("${spring.redis.port}")
private int redisPort;
private StatefulRedisConnection<String, String> redisConnection;
private static RedisClient redisClient;
@Bean
public RedisCommands connectionFactory() {
RedisURI redisURI = RedisURI.create(redisHostname,redisPort);
redisClient = RedisClient.create(redisURI);
redisConnection = redisClient.connect();
RedisCommands<String, String> syncCommands =
redisConnection.sync();
return syncCommands;
}
}
我想在应用程序关闭或退出时调用 redisClient.shutdown();
。终止redis连接的正确位置是什么?
您有两个选择:
- 使用
@PreDestroy
:
@PreDestroy
public StatefulRedisConnection<String, String> redisConnection() {
redisConnection.close();
redisClient.close();
}
- 通过
@Bean
方法
确保将 RedisClient
和 StatefulRedisConnection
公开为 bean。命令接口 (RedisCommands
) 不公开 close()
方法。
@Configuration
class RedisConfiguration {
@Value("${spring.redis.host}")
private String redisHostname;
@Value("${spring.redis.port}")
private int redisPort;
@Bean(destroyMethod = "close")
public StatefulRedisConnection<String, String> redisClient() {
RedisURI redisURI = RedisURI.create(redisHostname,redisPort);
return RedisClient.create(redisURI);
redisConnection = redisClient.connect();
}
@Bean(destroyMethod = "close")
public StatefulRedisConnection<String, String> redisConnection(RedisClient client) {
return client.connect();
}
@Bean
public RedisCommands redisCommands(StatefulRedisConnection<String, String> connection) {
return connection.sync();
}
}
第一种方法较短,而 @Bean
方法允许您与应用程序中的中间对象交互。
我已经用这样的 Lettuce(io.lettuce.core.api) 配置初始化了 Spring 启动应用
@Configuration
class RedisConfiguration {
@Value("${spring.redis.host}")
private String redisHostname;
@Value("${spring.redis.port}")
private int redisPort;
private StatefulRedisConnection<String, String> redisConnection;
private static RedisClient redisClient;
@Bean
public RedisCommands connectionFactory() {
RedisURI redisURI = RedisURI.create(redisHostname,redisPort);
redisClient = RedisClient.create(redisURI);
redisConnection = redisClient.connect();
RedisCommands<String, String> syncCommands =
redisConnection.sync();
return syncCommands;
}
}
我想在应用程序关闭或退出时调用 redisClient.shutdown();
。终止redis连接的正确位置是什么?
您有两个选择:
- 使用
@PreDestroy
:
@PreDestroy
public StatefulRedisConnection<String, String> redisConnection() {
redisConnection.close();
redisClient.close();
}
- 通过
@Bean
方法
确保将 RedisClient
和 StatefulRedisConnection
公开为 bean。命令接口 (RedisCommands
) 不公开 close()
方法。
@Configuration
class RedisConfiguration {
@Value("${spring.redis.host}")
private String redisHostname;
@Value("${spring.redis.port}")
private int redisPort;
@Bean(destroyMethod = "close")
public StatefulRedisConnection<String, String> redisClient() {
RedisURI redisURI = RedisURI.create(redisHostname,redisPort);
return RedisClient.create(redisURI);
redisConnection = redisClient.connect();
}
@Bean(destroyMethod = "close")
public StatefulRedisConnection<String, String> redisConnection(RedisClient client) {
return client.connect();
}
@Bean
public RedisCommands redisCommands(StatefulRedisConnection<String, String> connection) {
return connection.sync();
}
}
第一种方法较短,而 @Bean
方法允许您与应用程序中的中间对象交互。