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

news/2024/12/21 23:06:52/

一个对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地址:https://github.com/mingyang66/spring-parent

一、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: io.netty.channel.ConnectTimeoutException: connection timed out: /10.10.xx.xxx:26382at io.netty.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) {builder.commandTimeout(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);}

http://www.ppmy.cn/news/1210174.html

相关文章

CMakeCache.txt有什么用

2023年11月11日&#xff0c;周六上午 CMakeCache.txt 是由 CMake 自动生成的一个缓存文件&#xff0c;用于记录在配置过程中生成的各种变量和选项的值。 在使用 CMake 构建项目时&#xff0c;CMake 会根据 CMakeLists.txt 文件中的配置和命令&#xff0c;解析项目的源代码并生…

Python爬虫所需的常用库

爬虫是指通过程序自动访问互联网上的各种网站&#xff0c;并从网站上抓取所需的数据。Python作为一门强大的编程语言&#xff0c;拥有丰富的库和工具&#xff0c;使得编写爬虫变得更加容易和高效。本文将介绍一些Python爬虫中常用的库&#xff0c;包括网络请求库、解析库、数据…

14届蓝桥青少STEMA-C++组2月评测

14届蓝桥青少STEMA-C++组2月评测 编程题 第一题(难度系数2,15 个计分点) 题目编号:22021801CB01 知识点:运算符 编程实现:求和 题目描述: 给定一个正整数N(1<N<10^6),求出N左右相邻两个正整数的和。 例如:N = 6,左边相邻的数为5,右边相邻的数为7…

Versal 自适应 SoC SelectMAP 启动检查表

Versal 自适应 SoC SelectMAP 启动检查表 本文档提供了有关 SelectMAP 启动设置的技巧和指南。在提交个案服务请求之前&#xff0c;应认真查看以下检查表。SelectMAP 启动模式的常规检查表&#xff1a; 是否已查看 SelectMAP 文档&#xff0c;了解连接和电源轨的用法&#…

Clickhouse学习笔记(5)—— ClickHouse 副本

Data Replication | ClickHouse Docs 副本的目的主要是保障数据的高可用性&#xff0c;即使一台 ClickHouse 节点宕机&#xff0c;那么也可以从其他服务器获得相同的数据 注意&#xff1a; clickhouse副本机制的实现要基于zookeeperclickhouse的副本机制只适用于MergeTree f…

机器学习算法——线性回归与非线性回归

目录 1. 梯度下降法1.1 一元线性回归1.2 多元线性回归1.3 标准方程法1.4 梯度下降法与标准方程法的优缺点 2. 相关系数与决定系数 1. 梯度下降法 1.1 一元线性回归 定义一元线性方程 y ω x b y\omega xb yωxb 则误差&#xff08;残差&#xff09;平方和 C ( ω , b ) …

竞赛选题 深度学习疫情社交安全距离检测算法 - python opencv cnn

文章目录 0 前言1 课题背景2 实现效果3 相关技术3.1 YOLOV43.2 基于 DeepSort 算法的行人跟踪 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习疫情社交安全距离检测算法 ** 该项目较为新颖&#xff0c;适合作为竞赛…

在任何机器人上实施 ROS 导航堆栈的指南

文章目录 路径规划参考 路径规划 路径规划是导航的最终目标。这允许用户向机器人给出目标姿势&#xff0c;并让它在给定的环境中自主地从当前位置导航到目标位置。这是我们迄今为止所做的一切&#xff08;地图绘制和本地化&#xff09;的汇集点。ROS 导航堆栈已经为我们完成了…