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 - 配置重试时间间隔

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/53549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Go 基础篇】Go语言 init函数详解:包的初始化与应用

介绍 在Go语言中&#xff0c;init() 函数是一种特殊的函数&#xff0c;用于在包被导入时执行一次性的初始化操作。init() 函数不需要手动调用&#xff0c;而是在包被导入时自动执行。这使得我们可以在包导入时完成一些必要的初始化工作&#xff0c;确保包的使用具有正确的环境…

基于Java+SpringBoot+vue前后端分离可盈保险合同管理系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

交互设计原则是什么 优漫动游

可能很多人都忘了&#xff0c;在互联网发展早期&#xff0c;很多网站的交互设计其实非常简单。往往一个翻页效果、一个简短的动画就能吸引到很多用户。而如今随着互联网的不断更新迭代&#xff0c;技术不断革新&#xff0c;网站交互也得到了很大程度的加强&#xff0c;可以说当…

【Unity的HDRP渲染管线下用Steam VR串流结合使用遇到的各种问题_SteamVR 插件和Pico串流助手】

用Steam串流VR 背景:1.项目准备:相关文档和社区资源需要下载的工具2.梳理工程渲染设置和场景烘培正确:几个概念的一些说明:1. SteamVR:2. SteamVR插件:3. OpenVR和OpenXR:4. XRI:5. Pico串流助手:6. "Mock Runtime"选项含义SteamVR插件导入配置好SteamVR Came…

SpingMVC拦截器-用户登录权限控制分析

视频链接&#xff1a;08-SpringMVC拦截器-用户登录权限控制代码实现2_哔哩哔哩_bilibili 114 1、做了一个用户跟角色添加的相关操作 1.1 这个后台工程&#xff0c;没有进行相关操作也能够进行登录&#xff1a; 2、现在我做一个用户的权限控制&#xff0c;如果当前我没有进行操…

【vue3.0中ref与reactive的区别及使用】

什么是ref与reactive ref与reactive都是Vue3.0中新增的API&#xff0c;用于响应式数据的处理。 1. ref ref是一个函数&#xff0c;可以用于将一个普通的数据类型转换成响应式数据。ref返回一个包含value属性的对象&#xff0c;通过修改value属性的值&#xff0c;可以触发组件…

解决Springboot创建工程时,pom.xml文件中的插件spring-boot-maven-plugin报红

在初始创建工程完成之后&#xff0c;发现pom文件中有错误 spring-boot-maven-plugin这一行会报红 解决办法&#xff1a;在代码中添加版本信息 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-…

Mybatis的综合案例-学生信息查询系统 用于校验是否真正学习掌握了动态SQL

Mybatis的综合案例-学生信息查询系统 需求一&#xff1a;当用户输入的学生姓名不为空&#xff0c;则只根据学生信息进行查询; 当用户输入的学生姓名为空&#xff0c;且专业不为空&#xff0c;那么就根据学生专业进行学生的查询 需求二&#xff1a;查询所有id值小于5的学生信息…

git常用操作命令(不定时更新)

git常用操作命令 将某个分支的某次提交迁移到另外一个分支查询这次提交的ID号方法一方法二 切换到目标分支执行commitID合并指令 将某个分支的某次提交迁移到另外一个分支 查询这次提交的ID号 方法一 方法二 切换到目标分支 git checkout 目标分支名 执行commitID合并指令 gi…

Dataset类实践

Dataset类实践 蚂蚁蜜蜂分类数据集和下载链接https://download.pytorch.org/tutorial/hymenoptera_data.zip Dataset&#xff1a;提供一种方式去获取数据及其lable Q&#xff1a;如何获取每个数据及其lable 重写构造方法和获取标签方法 Q&#xff1a;告诉我们总共有多少数据 …

leetcode739. 每日温度 单调栈

自己思路&#xff1a; 想到用两个栈&#xff0c;一个维护元素、另一个维护下标。但是还是无法处理有重复元素的问题&#xff08;用哈希表来存储的时候&#xff09;。所以就看了答案的思路。 答案思路&#xff1a; 从前往后遍历&#xff0c;维护一个单调栈。栈存放数组的下标。…

WPF基础入门-Class7-WPF-MVVN框架

WPF基础入门 Class7-MVVN框架 使用框架可以省掉如Class6中的ViewModelBase.cs的OnPropertyChanged&#xff0c;亦方便命令传参 1、NuGet安装CommunityToolkit.Mvvm&#xff08;原Mircrosoft.Toolkit.Mvvm&#xff09;也可以安装MVVMLight等其他集成库 2、显示页面&#xff1…

小研究 - JVM 逃逸技术与 JRE 漏洞挖掘研究(五)

Java语言是最为流行的面向对象编程语言之一&#xff0c; Java运行时环境&#xff08;JRE&#xff09;拥有着非常大的用户群&#xff0c;其安全问题十分重要。近年来&#xff0c;由JRE漏洞引发的JVM逃逸攻击事件不断增多&#xff0c;对个人计算机安全造成了极大的威胁。研究JRE安…

Compose - 基本使用

一、概念 1.1 Compose优势 由一个个可以组合的Composable函数拼成界面&#xff0c;方便维护和复用。布局模型不允许多次测量&#xff0c;提升了性能。Compose可以和View互操作&#xff08;相互包含对方&#xff09;。 1.2 声明式UI APP展示的数据绝大多数不是静态数据而是会…

[论文分享]TSPTM-survey:时间序列预训练模型研究综述

目录 1 概要 1.1 贡献点 2 背景 2.1 时序挖掘(TSM)任务 2.2 时间序列的深度学习模型 2.3 预训练模型优势 3 TS-PTMS 概述 3.1 监督预训练 3.1.1 基于分类的预训练 3.1.1.1 通用编码器 3.1.1.2 对齐编码器 3.1.1.3 模型重编程 3.1.1.4 总结 3.1.2 基于预测的预训练…

MySQL数据库中间件Mycat介绍及下载安装(教程)

一&#xff0c;介绍 MyCat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用MySQL一样来使用MyCat&#xff0c;对于开发人员来说根本感觉不到MyCat的存在。 开发人员只需要连接MyCat即可&#xff0c;而具体底层用到几台数据库&#xff0c;每一台数据库服务器…

Linux TCP协议

传输层的协议主要有三个&#xff1a;TCP协议&#xff08;可靠&#xff09;、UDP协议&#xff08;不可靠&#xff09;和SCPT协议&#xff08;不可靠&#xff09;。 一、TCP协议的概念 TCP协议也称传输控制协议&#xff0c;是一种可靠的、面向连接的、基于字节流的传输层通信协…

缓存最佳实践

目录 前言 一、Cache Aside&#xff08;旁路缓存&#xff09;策略 二、不一致解决场景及解决方案 一、数据库主从不一致 二、缓存与数据库不一致 三、问题分析 三、缓存误用 一、多服务共用缓存实例 二、调用方缓存数据 三、缓存作为服务与服务之间传递数据的媒介 四…

二叉搜索树-----红黑树

✅<1>主页&#xff1a;我的代码爱吃辣&#x1f4c3;<2>知识讲解&#xff1a;数据结构——红黑树☂️<3>开发环境&#xff1a;Visual Studio 2022&#x1f4ac;<4>前言&#xff1a;红黑树也是一颗二叉搜索树&#xff0c;其作为map&#xff0c;set的底层…

[PyTorch][chapter 51][Auto-Encoder -1]

目录&#xff1a; 简介 损失函数 自动编码器的类型 一 AutoEncoder 简介&#xff1a; 自动编码器是一种神经网络&#xff0c;用于无监督学习任务.(没有标签或标记数据), 例如降维,特征提取和数据压缩. 主要任务&#xff1a; 1&#xff1a; 输入数据 …