redisson参数配置
文章目录
- pom
- 配置
- 链接配置建议
pom
<!-- 引入spring-data-redis组件 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><!-- 因springboot2.x中默认集成了lettuce,因此需要排掉该依赖 --><exclusion><artifactId>lettuce-core</artifactId><groupId>io.lettuce</groupId></exclusion></exclusions>
</dependency>
<!-- 引入redisson对springboot的集成适配包 -->
<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>${redisson.version}</version>
</dependency>
配置
@Configuration
public class RedisConfiguration {@Value("${redis.address}")private String redisAddress;@Value("${redis.password:}")private String redisPassword;@Value("${redis.database:0}")private Integer redisDatabase = 0;@Value("${redis.connect.timeout:3000}")private Integer redisConnectTimeout = 3000;@Value("${redis.cluster.address}")private List<String> redisClusterAddress;@Value("${redis.cluster.scan.interval:5000}")private Integer redisClusterScanInterval = 5000;@Value("${redis.password:}")private String redisPassword;@Value("${redis.connect.timeout:3000}")private Integer redisConnectTimeout = 3000;@Value("${redis.connection.idle.timeout:10000}")private Integer redisConnectionIdleTimeout = 10000;@Value("${redis.connection.ping.interval:1000}")private Integer redisConnectionPingInterval = 1000;@Value("${redis.timeout:2000}")private Integer timeout = 2000;@Value("${redis.retry.attempts:3}")private Integer redisRetryAttempts = 3;@Value("${redis.retry.interval:200}")private Integer redisRetryInterval = 200;@Value("${redis.master.connection.pool.min.size:50}")private Integer redisMasterConnectionPoolMinSize = 50;@Value("${redis.master.connection.pool.max.size:200}")private Integer redisMasterConnectionPoolMaxSize = 200;@Value("${redis.connection.idle.timeout:10000}")private Integer redisConnectionIdleTimeout = 10000;@Value("${redis.connection.ping.interval:1000}")private Integer redisConnectionPingInterval = 1000;@Value("${redis.timeout:2000}")private Integer timeout = 2000;@Value("${redis.connection.pool.min.size:50}")private Integer redisConnectionPoolMinSize;@Value("${redis.connection.pool.max.size:200}")private Integer redisConnectionPoolMaxSize;@Value("${redis.retry.attempts:3}")private Integer redisRetryAttempts = 3;@Value("${redis.retry.interval:200}")private Integer redisRetryInterval = 200;单机
@Beanpublic RedissonConnectionFactory redissonConnectionFactory(Config
redissonSingleServerConfig) {return new RedissonConnectionFactory(redissonSingleServerConfig);}@Beanpublic Config redissonSingleServerConfig() {Config redissonConfig = new Config();SingleServerConfig serverConfig = redissonConfig.useSingleServer();serverConfig.setAddress(redisAddress);serverConfig.setConnectionMinimumIdleSize(redisConnectionPoolMinSize);serverConfig.setConnectionPoolSize(redisConnectionPoolMaxSize);serverConfig.setDatabase(redisDatabase);serverConfig.setPassword(redisPassword);serverConfig.setConnectTimeout(redisConnectTimeout);serverConfig.setIdleConnectionTimeout(redisConnectionIdleTimeout);serverConfig.setPingConnectionInterval(redisConnectionPingInterval);serverConfig.setTimeout(timeout);serverConfig.setRetryAttempts(redisRetryAttempts);serverConfig.setRetryInterval(redisRetryInterval);redissonConfig.setCodec(new JsonJacksonCodec());return redissonConfig;}主备
@Beanpublic RedissonConnectionFactory redissonConnectionFactory(Config
redissonMasterSlaveServersConfig) {return new RedissonConnectionFactory(redissonMasterSlaveServersConfig);}@Beanpublic Config redissonMasterSlaveServersConfig() {Config redissonConfig = new Config();MasterSlaveServersConfig serverConfig = redissonConfig.useMasterSlaveServers();serverConfig.setMasterAddress(redisMasterAddress);serverConfig.setDatabase(redisDatabase);serverConfig.setPassword(redisPassword);serverConfig.setMasterConnectionMinimumIdleSize(redisMasterConnectionPoolMinSize);serverConfig.setMasterConnectionPoolSize(redisMasterConnectionPoolMaxSize);serverConfig.setReadMode(ReadMode.MASTER_SLAVE);serverConfig.setSubscriptionMode(SubscriptionMode.MASTER);serverConfig.setConnectTimeout(redisConnectTimeout);serverConfig.setIdleConnectionTimeout(redisConnectionIdleTimeout);serverConfig.setPingConnectionInterval(redisConnectionPingInterval);serverConfig.setTimeout(timeout);serverConfig.setRetryAttempts(redisRetryAttempts);serverConfig.setRetryInterval(redisRetryInterval);redissonConfig.setCodec(new JsonJacksonCodec());return redissonConfig;}集群
@Beanpublic RedissonConnectionFactory redissonConnectionFactory(Config
redissonClusterServersConfig) {return new RedissonConnectionFactory(redissonClusterServersConfig);}@Beanpublic Config redissonClusterServersConfig() {Config redissonConfig = new Config();ClusterServersConfig serverConfig = redissonConfig.useClusterServers();serverConfig.setNodeAddresses(redisClusterAddress);serverConfig.setScanInterval(redisClusterScanInterval);serverConfig.setPassword(redisPassword);serverConfig.setMasterConnectionMinimumIdleSize(redisMasterConnectionPoolMinSize);serverConfig.setMasterConnectionPoolSize(redisMasterConnectionPoolMaxSize);serverConfig.setReadMode(ReadMode.MASTER);serverConfig.setSubscriptionMode(SubscriptionMode.MASTER);serverConfig.setConnectTimeout(redisConnectTimeout);serverConfig.setIdleConnectionTimeout(redisConnectionIdleTimeout);serverConfig.setPingConnectionInterval(redisConnectionPingInterval);serverConfig.setTimeout(timeout);serverConfig.setRetryAttempts(redisRetryAttempts);serverConfig.setRetryInterval(redisRetryInterval);redissonConfig.setCodec(new JsonJacksonCodec());return redissonConfig;}
}
链接配置建议
读取模式-readMode
建议采⽤ MASTER,即Master节点承担所有的读写流量,⼀⽅⾯避免数据因主从同步时延带来的⼀致性问题;另⼀⽅⾯,
如从节点故障,配置值=SLAVE,所有读请求会触发报错;配置值=MASTER_SLAVE,部分读请求会触发异常。读报错会持
续failedSlaveCheckInterval(默认30S)时间,直⾄从可⽤节点列表中摘除。
如需读写流量分流处理,DCS服务提供了针对读写流量分流的实例类型-读写分离,通过在中间架设代理节点实现读写流
量分发,遇到从节点故障时,⾃动切流⾄主节点,对业务应⽤⽆感知,且故障感知时间窗⼝远⼩于redisson内部的时间
窗⼝。
订阅模式-subscriptionMode
建立采⽤ MASTER,原理同上
连接池配置
连接池的⼤⼩没有绝对的标准,建议根据业务流量进⾏合理配置,⼀般连接池⼤⼩的参数计算公式如下
最⼩连接数 = (单机访问Redis QPS) / (1000ms / 单命令平均耗时)
最⼤连接数 = (单机访问Redis QPS) / (1000ms / 单命令平均耗时) * 150%
举例:某个业务应⽤的QPS为10000左右,每个请求需访问redis10次,也意味着每秒对redis的访问次数为100000次,
同时该业务应⽤有10台机器,计算如下
单机访问Redis QPS = 100000 / 10 = 10000
单命令访问耗时 = 20ms (redis处理单命令耗时为510ms,遇到⽹络抖动按照1520ms来估算)
最⼩连接数 = (10000) / (1000ms / 20ms)= 200
最⼤连接数 = (10000) / (1000ms / 20ms)* 150% = 300
以上计算⽅式只适⽤于⼀般业务场景,建议根据业务情况做适当调整适配
重试配置
redisson中⽀持重试配置,主要是如下两个参数,建议根据业务情况配置合理值,⼀般重试次数为3,重试间隔为200ms
左右
retryAttemps - 配置重试次数
retryInterval - 配置重试时间间隔
相关文章:
redisson参数配置
文章目录 pom配置链接配置建议 pom <!-- 引入spring-data-redis组件 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><!-- 因springboot2.x…...
【基于Arduino的仿生蚂蚁机器人】
【基于Arduino的仿生蚂蚁机器人】 1. 概述2. Arduino六足位移台–蚂蚁机器人3D模型3. 3D 打印零件4. 组装Arduino六足位移台5. Arduino蚂蚁机器人电路图6. 为Arduino Hexapod设计PCB7. 组装电路板8. 系统代码9. Arduino蚂蚁机器人安卓应用程序在本教程中,我将向您展示如何构建…...
angular12里面FormGroup做多个项目的相关check
FromFroup在鼠标失去焦点时做相关check,可以在group方法第二个参数的位置加一个对象参数 { validator: this.checkPasswords } 在Angular 12中,可以使用formGroup来进行两个密码是否一致的检查。以下是一个示例: 首先,在组件的…...
TypeScript 的发展与基本语法
目录 一、为什么什么是TypeScript? 1、发展历史 2、typescript与javascript 3、静态类型的好处 二、基础语法 1、基础数据类型 2、补充类型 3、泛型 4、泛型的高级语法 5、类型别名&类型断言 6、字符串/数字 字面量 三、高级类型 1、联合/交叉类型…...
macOS - 上编译运行 risc-v (spike)
文章目录 一、说明二、安装步骤三、测试 一、说明 本文根据以下文章改编: RISC-V 环境配置 https://decaf-lang.github.io/minidecaf-tutorial/docs/step0/riscv_env.html 相关链接: riscv-gnu-toolchain GNU toolchain for RISC-V, including GCC ht…...
Linux--线程地址空间
1.程序地址空间 先来就看这张图 这是一张程序地址分布的图,通过一段代码来证明地址空间的分布情况 编译结果: 可以看出的是,父子进程中对于同一个变量打印的地址是一样的,这是因为子进程以父进程为模板,因为都没有对数…...
华为OD机试 - 最佳植树距离 - 二分查找(Java 2023 B卷 100分)
目录 一、题目描述二、输入描述三、输出描述四、备注说明五、二分查找六、解题思路七、Java算法源码八、效果展示1、输入2、输出3、说明 一、题目描述 按照环保公司要求,小明需要在沙化严重的地区进行植树防沙工作,初步目标是种植一条直线的树带。 由于…...
RNN+LSTM正弦sin信号预测 完整代码数据视频教程
视频讲解:RNN+LSTM正弦sin信号预测_哔哩哔哩_bilibili 效果演示: 数据展示: 完整代码: import torch import torch.nn as nn import torch.optim as optim import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.preprocessing import…...
如何自己实现一个丝滑的流程图绘制工具(四)bpmn-js开启只读状态
背景 流程图需要支持只读状态和编辑状态 翻看官方案例源码,扒拉到了禁用的js代码 DisableModeling.js const TOGGLE_MODE_EVENT toggleMode const HIGH_PRIORITY 10001export default function DisableModeling(eventBus,contextPad,dragging,directEditing,e…...
字节跳动 Git 的正确使用姿势与最佳实践
版本控制Git 黑马&尚硅谷 Git的前世今生 方向介绍 为什么要学习Git 1.0 Git是什么 1.1 版本控制 1.1.1 本地版本控制 1.1.2 集中版本控制 1.1.3 分布式版本控制 我们已经把三个不同的版本控制系统介绍完了,Git 作为分布式版本控制工具, 虽然目前来讲…...
龙迅LT7911UX TYPE-C/DP转MIPI/LVDS,内有HDCP
1. 描述 LT7911UX是一种高性能的Type-C/DP1.4a到MIPI或LVDS芯片。HDCP RX作为HDCP中继器的上游端,可以与其他芯片的HDCP TX协同工作,实现中继器的功能。 对于DP1.4a输入,LT7911UX可以配置为1/2/4车道。自适应均衡使其适用于长电缆应用&#…...
Spearman Footrule距离
Spearman Footrule距离是一种用于衡量两个排列之间差异的指标。它衡量了将一个排列变换为另一个排列所需的操作步骤,其中每个操作步骤都是交换相邻元素。具体而言,Spearman Footrule距离是每个元素在两个排列中的排名差的绝对值之和。 这个指标的名字中…...
docker 安装 Wordpress 用lnmp搭建出现的故障
第一个故障就是mysql出现的故障了 你起mysql镜像是这么起的导致pid号用不了 docker run --namemysql -d --privileged --device-write-bps /dev/sda:10M -v /usr/local/mysql --net mynetwork --ip 172.20.0.20 mysql:lnmp 解决方法 docker run --namemysql -d --privilege…...
【C++入门到精通】C++入门 —— 继承(基类、派生类和多态性)
阅读导航 前言一、继承的概念及定义1. 继承的概念2.继承的定义⭕定义格式⭕继承关系和访问限定符⭕继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承⭕单…...
【Spring框架】Spring事务的介绍与使用方法
⚠️ 再提醒一次:Spring 本身并不实现事务,Spring事务 的本质还是底层数据库对事务的支持。你的程序是否支持事务首先取决于数据库 ,比如使用 MySQL 的话,如果你选择的是 innodb 引擎,那么恭喜你,是可以支持…...
七夕特别篇 | 浪漫的Bug
文章目录 前言一、迷失的爱情漩涡(多线程中的错误同步)1.1 Bug 背景1.2 Bug 分析1.3 Bug 解决 二、心形积分之恋(心形面积计算中的数值积分误差)1.1 Bug 背景1.1.1 背景1.1.2 数学模型 1.2 Bug 分析1.2.1 初始代码1.2.2 代码工作流…...
数据结构双向链表
Hello,好久不见,今天我们讲链表的双向链表,这是一个很厉害的链表,带头双向且循环,学了这个链表,你会发现顺序表的头插头删不再是一个麻烦问题,单链表的尾插尾删也变得简单起来了,那废…...
解决政务审计大数据传输难题!镭速传输为政务行业提供解决方案
政务行业是国家治理的重要组成部分,涉及到国家安全、社会稳定、民生福祉等方面。随着信息技术的快速发展和革新,政务信息化也迎来了新一轮的升级浪潮。国家相继出台了《国家信息化发展战略纲要》《“十三五”国家信息化规划》《“十四五”推进国家政务信…...
redis 7高级篇1 redis的单线程与多线程
一 redis单线程与多线程 1.1 redis单线程&多线程 1.redis的单线程 redis单线程主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包括获取 (socket 读)、解析、执行、内容返回 (socket 写) 等都由一个顺序串行的主线程处理…...
GO语言:Worker Pools线程池、Select语句、Metex互斥锁详细示例教程
目录标题 一、Buffered Channels and Worker Pools1. Goroutine and Channel Example 线程和通道示例2. Deadlock 死锁3. Closing buffered channels 关闭通道4. Length vs Capacity 长度和容量5. WaitGroup6. Worker Pool Implementation 线程池 二、Select1. Example2. Defau…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
