/** * Creates a default {@link LettuceClientConfiguration} with: * <dl> * <dt>SSL</dt> * <dd>no</dd> * <dt>Peer Verification</dt> * <dd>yes</dd> * <dt>Start TLS</dt> * <dd>no</dd> * <dt>Client Options</dt> * <dd>{@link ClientOptions} with enabled {@link io.lettuce.core.TimeoutOptions}</dd> * <dt>Client Resources</dt> * <dd>none</dd> * <dt>Client name</dt> * <dd>none</dd> * <dt>Read From</dt> * <dd>none</dd> * <dt>Connect Timeout</dt> * <dd>60 Seconds</dd> * <dt>Shutdown Timeout</dt> * <dd>100 Milliseconds</dd> * <dt>Shutdown Quiet Period</dt> * <dd>100 Milliseconds</dd> * </dl> * * @return a {@link LettuceClientConfiguration} with defaults. */ static LettuceClientConfiguration defaultConfiguration() { return builder().build(); }
private RedisURI createRedisURIAndApplySettings(String host, int port) { RedisURI.Builder builder = RedisURI.Builder.redis(host, port); getRedisPassword().toOptional().ifPresent(builder::withPassword); clientConfiguration.getClientName().ifPresent(builder::withClientName); builder.withSsl(clientConfiguration.isUseSsl()); builder.withVerifyPeer(clientConfiguration.isVerifyPeer()); builder.withStartTls(clientConfiguration.isStartTls()); builder.withTimeout(clientConfiguration.getCommandTimeout()); return builder.build(); }
RedisClient redisClient = clientConfiguration.getClientResources() // clientConfiguration.getClientOptions().ifPresent(redisClient::setOptions); RedisClient redisClient = clientConfiguration.getClientResources() // clientConfiguration.getClientOptions().ifPresent(redisClient::setOptions); return redisClient; RedisClusterClient clusterClient = clientConfiguration.getClientResources() // clientConfiguration.getClientOptions() // .filter(clientOptions -> clientOptions instanceof ClusterClientOptions) // .ifPresent(clientOptions -> clusterClient.setOptions((ClusterClientOptions) clientOptions)); : createRedisURIAndApplySettings(getHostName(), getPort()); RedisClient redisClient = clientConfiguration.getClientResources() // clientConfiguration.getClientOptions().ifPresent(redisClient::setOptions);
private RedisURI getSentinelRedisURI() { RedisURI redisUri = LettuceConverters .sentinelConfigurationToRedisURI((org.springframework.data.redis.connection.RedisSentinelConfiguration) configuration); getRedisPassword().toOptional().ifPresent(redisUri::setPassword); clientConfiguration.getClientName().ifPresent(redisUri::setClientName); redisUri.setTimeout(clientConfiguration.getCommandTimeout()); redisUri.setDatabase(getDatabase()); return redisUri; }
public void destroy() { resetConnection(); if (connectionProvider instanceof DisposableBean) { try { ((DisposableBean) connectionProvider).destroy(); } catch (Exception e) { if (log.isWarnEnabled()) { log.warn(connectionProvider + " did not shut down gracefully.", e); } } } try { Duration quietPeriod = clientConfiguration.getShutdownQuietPeriod(); Duration timeout = clientConfiguration.getShutdownTimeout(); client.shutdown(quietPeriod.toMillis(), timeout.toMillis(), TimeUnit.MILLISECONDS); } catch (Exception e) { if (log.isWarnEnabled()) { log.warn((client != null ? ClassUtils.getShortName(client.getClass()) : "LettuceClient") + " did not shut down gracefully.", e); } } if (clusterCommandExecutor != null) { try { clusterCommandExecutor.destroy(); } catch (Exception ex) { log.warn("Cannot properly close cluster command executor", ex); } } }
@Override public Duration getCommandTimeout() { return clientConfiguration.getCommandTimeout(); }
@Override public Duration getShutdownTimeout() { return clientConfiguration.getShutdownTimeout(); }
@Override public Optional<String> getClientName() { return clientConfiguration.getClientName(); }
@Override public Optional<ClientResources> getClientResources() { return clientConfiguration.getClientResources(); }
/** * Returns whether to issue a StartTLS. * * @return use of StartTLS. */ public boolean isStartTls() { return clientConfiguration.isStartTls(); }
/** * Returns whether to use SSL. * * @return use of SSL. */ public boolean isUseSsl() { return clientConfiguration.isUseSsl(); }
@Override public Optional<ReadFrom> getReadFrom() { return clientConfiguration.getReadFrom(); }
@Override public Optional<ClientOptions> getClientOptions() { return clientConfiguration.getClientOptions(); }
private RedisURI getSentinelRedisURI() { RedisURI redisUri = LettuceConverters .sentinelConfigurationToRedisURI((org.springframework.data.redis.connection.RedisSentinelConfiguration) configuration); getRedisPassword().toOptional().ifPresent(redisUri::setPassword); clientConfiguration.getClientName().ifPresent(redisUri::setClientName); redisUri.setTimeout(clientConfiguration.getCommandTimeout()); redisUri.setDatabase(getDatabase()); return redisUri; }
private long getClientTimeout() { return clientConfiguration.getCommandTimeout().toMillis(); }
/** * Returns the shutdown timeout for shutting down the RedisClient (in milliseconds). * * @return shutdown timeout. * @since 1.6 */ public long getShutdownTimeout() { return clientConfiguration.getShutdownTimeout().toMillis(); }
/** * Returns the client name. * * @return the client name or {@literal null} if not set. * @since 2.1 */ @Nullable public String getClientName() { return clientConfiguration.getClientName().orElse(null); }
/** * Get the {@link ClientResources} to reuse infrastructure. * * @return {@literal null} if not set. * @since 1.7 */ public ClientResources getClientResources() { return clientConfiguration.getClientResources().orElse(null); }
@Override public boolean isStartTls() { return clientConfiguration.isStartTls(); }
@Override public boolean isUseSsl() { return clientConfiguration.isUseSsl(); }