Redis学习笔记8:基于springboot的Lettuce redis客户端connectTimeout、timeout、shutdownTimeout

编程入门 行业动态 更新时间:2024-10-20 07:52:09

Redis<a href=https://www.elefans.com/category/jswz/34/1770117.html style=学习笔记8:基于springboot的Lettuce redis客户端connectTimeout、timeout、shutdownTimeout"/>

Redis学习笔记8:基于springboot的Lettuce redis客户端connectTimeout、timeout、shutdownTimeout

一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

<dependency><groupId>io.github.mingyang66</groupId><artifactId>emily-spring-boot-redis</artifactId><version>4.3.9</version>
</dependency>

GitHub地址:

一、lettuce redis建立连接超时时间connectTimeout,默认:10S
        ClientOptions.Builder builder = this.initializeClientOptionsBuilder(properties);Duration connectTimeout = properties.getConnectTimeout();if (connectTimeout != null) {builder.socketOptions(SocketOptions.builder().connectTimeout(connectTimeout).build());}

在io.lettuce.core.SocketOptions类中,connectTimeout参数用于设置连接超时时间。

连接超时时间是指在尝试建立连接时,等待连接建立完成的最大时间。如果连接建立时间超过了设置的连接超时时间,那么连接将被认为是超时的,连接建立失败。

如果超时将会抛出如下异常:

Caused by: ioty.channel.ConnectTimeoutException: connection timed out: /10.10.xx.xxx:26382at ioty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run(AbstractNioChannel.java:261)... 10 more
Exception in thread "task-2865" org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redisat org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1604)at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1535)at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1360)at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1343)at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1061)at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:400)at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:195)at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144)at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105)at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:393)at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:373)at org.springframework.data.redis.core.AbstractOperations.execute(AbstractOperations.java:97)at org.springframework.data.redis.core.DefaultValueOperations.set(DefaultValueOperations.java:253)at com.emily.infrastructure.test.controller.RedisController.lambda$get2$3(RedisController.java:104)at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)at java.base/java.lang.Thread.run(Thread.java:833)
二、lettuce redis命令操作超时时间timeout,默认:60S
    private void applyProperties(LettuceClientConfiguration.LettuceClientConfigurationBuilder builder, RedisProperties properties) {if (this.isSslEnabled(properties)) {builder.useSsl();}//命令操作超时时间,默认:60sif (properties.getTimeout() != null) {buildermandTimeout(properties.getTimeout());}}

LettuceClientConfigurationBuilder的默认值设置:

	class LettuceClientConfigurationBuilder {...Duration timeout = Duration.ofSeconds(RedisURI.DEFAULT_TIMEOUT);}
三、lettuce redis管理连接超时时间shutdownTimeout,默认:100ms
    private void applyProperties(LettuceClientConfiguration.LettuceClientConfigurationBuilder builder, RedisProperties properties) {...if (properties.getLettuce() != null) {RedisProperties.Lettuce lettuce = properties.getLettuce();if (lettuce.getShutdownTimeout() != null && !lettuce.getShutdownTimeout().isZero()) {builder.shutdownTimeout(properties.getLettuce().getShutdownTimeout());}}}

LettuceClientConfigurationBuilder默认值设置:

	class LettuceClientConfigurationBuilder {...Duration shutdownTimeout = Duration.ofMillis(100);}

更多推荐

Redis学习笔记8:基于springboot的Lettuce redis客户端connectTimeout、timeout、shutdownTimeout

本文发布于:2023-11-15 10:21:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1598095.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:学习笔记   客户端   Lettuce   Redis   springboot

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!