当前位置: 首页 > news >正文

Spring Boot 整合 Redisson 缓存性能客户端(2023-03-06)

Spring Boot 整合 Redisson 缓存 (官网)

介绍:

Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service) Redisson提供了使用Redis的最简单和最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。

如果你现在正在使用其他的Redis的Java客户端,那么Redis命令和Redisson对象匹配列表 能够帮助你轻松的将现有代码迁徙到Redisson框架里来。

Redisson底层采用的是Netty 框架。支持Redis 2.8以上版本,支持Java1.6+以上版本。

例子Boot版本:

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>

1.0 依赖

Integrates Redisson with Spring Boot library. Depends on Spring Data Redis module.

将Redisson与Spring Boot库集成。取决于Spring Data Redis模块。

<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>2.15.2</version>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><!--    排除掉官方默认的 lettuce    --><exclusions><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions>
</dependency>

2.0 简单配置文件模式

spring:redis:database: 0host: '127.0.0.1'port: 6379password: '@'ssl: false

3.0 配置文件 (这里配置单一模式)

spring:redis:redisson:# 下面 config的值是个字符串config: |# (以下值除了连接信息都是默认值)singleServerConfig:# 客户端连接的名称clientName: null# 连接地址address: "redis://127.0.0.1:6379"# 连接服务器密码password: null# 如果池连接在超时时间内未使用且当前连接数量大于最小空闲连接池大小,则它将关闭并从池中删除, 以毫秒为单位的值idleConnectionTimeout: 10000# 连接 Redis 服务器超时, 以毫秒为单位的值connectTimeout: 10000# Redis 服务器响应超时, Redis 命令发送成功后开始倒计时, 以毫秒为单位的值timeout: 3000# Redis 命令无法发送到服务器的重试次数retryAttempts: 3# 重试间隔时间retryInterval: 1500# 连接池最小空闲连接数connectionMinimumIdleSize: 24# 连接池大小connectionPoolSize: 64# 尝试连接的数据库编号database: 0# DNS监测时间间隔,监测DNS的变化情况的时间间隔, 单位:毫秒dnsMonitoringInterval: 5000# Redisson内部经常通过发布和订阅来实现许多功能。长期保持一定数量的发布订阅连接是必须的# Redis 单个连接最大订阅数量 (以下是默认值)subscriptionsPerConnection: 5# Redis 多从节点的环境里,每个从服务节点里用于发布和订阅连接的最小保持连接数(长连接)subscriptionConnectionMinimumIdleSize: 1# 发布和订阅连接池大小subscriptionConnectionPoolSize: 50# 线程池数量threads: 16# Netty线程池数量nettyThreads: 32# Redis 数据编解码器。在读写 Redis 数据时使用。有几种实现方式可用codec: !<org.redisson.codec.Kryo5Codec> {}# 传输模式 (默认NIO)# EPOLL 要依赖里有netty-transport-native-epoll包 (linux)transportMode: "NIO"

(单一模式、 复制模式、 集群模式、 哨兵模式、 代理模式)

配置项需要参照org.redisson.config.Config,如果你想配置集群模式的Redisson,就点 Config的成员变量clusterServersConfig去看下里边有哪些可配置项。

  • lockWatchdogTimeout(监控锁的看门狗超时,单位:毫秒)

默认值:30000

监控锁的看门狗超时时间单位为毫秒。该参数只适用于分布式锁的加锁请求中未明确使用leaseTimeout参数的情况。如果该看门口未使用lockWatchdogTimeout去重新调整一个分布式锁的lockWatchdogTimeout超时,那么这个锁将变为失效状态。这个参数可以用来避免由Redisson客户端节点宕机或其他原因造成死锁的情况。

  • 框架提供的 RedissonAutoConfiguration 已经进行了自动装配, 下面就已经可以进行使用了

Available Spring Beans:

  • RedissonClient
  • RedissonRxClient
  • RedissonReactiveClient
  • RedisTemplate
  • ReactiveRedisTemplate

Try Redisson PRO with ultra-fast performance and support by SLA.

数据序列化说明

Redis命令和Redisson对象匹配列表

4.0 简单API (详细看官网(中文目录)的6.0 - 8.0)

4.1 分布式对象

Redisson的分布式RBucketJava对象是一种通用对象桶可以用来存放任类型的对象。 除了同步接口外,还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。

// 注入RedissonClient (ps: 也兼容了RedisTemplate, 在RedissonAutoConfiguration可看到配置了)
@Autowired
private RedissonClient redissonClient;@Test
public void myEST() throws Exception {RBucket<String> testBucket = redissonClient.getBucket("test_Bucket");// 设置值, 并在10秒后失效  (testBucket.setAsync()是异步API或者看文档)testBucket.set("tenSecond", 10L,TimeUnit.SECONDS);System.out.println("testBucket.getExpireTime() = " + testBucket.getExpireTime());System.out.println("testBucket.get() = " + testBucket.get());System.out.println("testBucket.isExists() = " + testBucket.isExists());TimeUnit.SECONDS.sleep(10L);System.out.println("testBucket.get() = " + testBucket.get());System.out.println("testBucket.isExists() = " + testBucket.isExists());
}testBucket.getExpireTime() = 1678090013002
testBucket.get() = tenSecond
testBucket.isExists() = true
testBucket.get() = null
testBucket.isExists() = false

其他的看官网文档

4.2 分布式集合

@Test
public void myEST() throws Exception {RMap<String, Object> test_map = redissonClient.getMap("test_Map");// 不会返回旧值, 快速putboolean fastPut = test_map.fastPut("t", "hhhh");System.out.println("fastPut = " + fastPut);Object put = test_map.put("t", "ggggg");System.out.println("put = " + put);// 30秒后过期boolean expire = test_map.expire(Duration.ofSeconds(30L));System.out.println("expire = " + expire);
}
fastPut = true
put = hhhh
expire = true

同时提供了, 带元素过期(getMapCache())、 本地缓存功能 (getLocalCachedMap())

其他的Set、 List、 队列、排序集看官网文档

4.3 分布式锁 (以前已经记录过, 更为详细看官网文档)

支持分布式的 普通的可重入锁、 公平锁、 联锁(所有都上锁成功才算加锁成功) 、 红锁、 读写锁(ReadWriteLock)、

信号量(Semaphore)、 闭锁(CountDownLatch)

1

相关文章:

Spring Boot 整合 Redisson 缓存性能客户端(2023-03-06)

Spring Boot 整合 Redisson 缓存 (官网) 介绍: Redisson是一个在Redis的基础上实现的Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;。它不仅提供了一系列的分布式的Java常用对象&#xff0c;还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, Sorte…...

【C和C++】输出100内能够被13整除的数,取模判断方法

目录 前言基础概念重温整除例子小知识点收尾前言 在软件行业已经有快十年,技术虽然一般般,但是足够应付和解决编程入门的相关问题! 都说十年磨一剑,积累到一定经验,是时候发挥自己的价值,给予入门的同行些许的帮助! 为什么要写收费专栏,其实原因很简单,时间就是金钱(…...

STC8单片机基于开源库读取DS18B20数据例程

STC8单片机基于开源库读取DS18B20数据例程 📍开源库FwLib_STC8 Github地址:https://github.com/IOsetting/FwLib_STC8📌STC官方STC8库函数资源:https://www.stcai.com/khs🎉本次利用FwLib_STC8库读取DS18B20,由于该开源库是基于VSCode编写,默认使用的是SDCC编译器,在…...

计算机专业毕业设计基于Spring Boot 学生在线考试系统

目录 一、学生端 1.1 登录 1.2 注册 1.3 学生首页 1.4 学生查看任务中心的试卷&#xff08;已答卷/未答卷&#xff09; 1.5 学生查看固定试卷以及开始做题 1.6 学生查看时段试卷以及开始做题 1.7 学生查看试卷中心 1.8 学生查看考试记录以及查看试卷 1.9 学生查看…...

【读书笔记】《深入浅出数据分析》第八章 启发法

目录一&#xff0c;什么是启发法&#xff1f;1&#xff0c;那什么是启发法&#xff1f;2&#xff0c;心理学上对启发法定义二&#xff0c;活动分析1&#xff0c;如何去分析活动效果呢&#xff1f;1.1 活动前期&#xff08;活动前1-2周&#xff09;1.2 活动中期1.3 活动结束一&a…...

英飞凌Tricore实战系列导读

本文框架 1.系列概述1.1 外设理论及应用介绍1.2 基于TC3xx的MCAL各外设配置开发1.3 基于TC3xx的Davinci工程开发1.4 项目中问题排查经验分享1.5 其他相关话题分享2. 目前已发布系列文章汇总1.系列概述 英飞凌TC3xx以其强大的性能,扩展性,存储及安全性能在汽车电子中扮演着越…...

做数据分析有前景吗?

当然有前景的。 每个行业都有发展前景&#xff0c;只是看你自身的技能情况或者关系人脉、软实力方面是否到位&#xff0c;不同的行业要求不一样。作为数据分析领域而言&#xff0c;属于IT行业&#xff0c;看的是你的专业技能&#xff1b;只要你技能过硬&#xff0c;就能在行业…...

Rust Web入门(六):服务器端web应用

本教程笔记来自 杨旭老师的 rust web 全栈教程&#xff0c;链接如下&#xff1a; https://www.bilibili.com/video/BV1RP4y1G7KF?p1&vd_source8595fbbf160cc11a0cc07cadacf22951 学习 Rust Web 需要学习 rust 的前置知识可以学习杨旭老师的另一门教程 https://www.bili…...

1.特定领域知识图谱知识融合方案(实体对齐):金融产业产业知识图谱-基于内容匹配和图模型的品牌知识链指

1 引言 供应链金融是一种围绕经营关系,以核心企业为依托,针对中小企业的新型金融服务。如何精准地还原企业间的经营关系,是供应链金融的关键所在。知识图谱是描绘实体间关系的网络结构,对于挖掘企业关系有重要意义。在真实场景中,仅有企业与用户的微观知识对于还原经营关系…...

前端基础语法合集

JS语法基础1-注释//单行注释/*......*/多行注释2-分号&#xff1b;用作分割javascript语句&#xff0c;可以省略。3-变量定义定义变量使用varvar a;//声明变量 var a100;//声明变量并赋值 var b,c;//声明多个变量 var d20;bd1;cb1;//一行多条语句要用;分割4-数据类型判断该变量…...

百亿补贴,京东的自卫反击战

“百亿补贴”这个词大家有没有很熟悉&#xff1f;大部分人应该是在看拼多多投放广告的时候&#xff0c;知道这个词的吧。而京东APP也于近日在升级11.6.2版本时&#xff0c;在更新日志中明确提到&#xff1a;“京东3.8节&#xff0c;百亿补贴上线”。至此&#xff0c;发酵数日的…...

融云入选中国信通院《高质量数字化转型产品及服务全景图》

企业数字化转型正在进入“深水区”。 3 月 3 日&#xff0c;“中国信息通信研究院&#xff08;以下简称中国信通院&#xff09;高质量数字化转型创新发展大会暨中国信通院‘铸基计划’年度峰会”在京召开&#xff0c;深度展示了中国信通院在数字化转型领域的工作成果&#xff…...

开源消息代理组件mosquitto

# ll total 556 -rw-r----- 1 sk sk 148417 Mar 6 14:59 libuv-1.44.2-1.el7.x86_64.rpm -rw-r----- 1 sk sk 120717 Mar 6 14:59 libwebsockets-3.0.1-2.el7.x86_64.rpm -rw-r----- 1 sk sk 293429 Mar 6 14:59 mosquitto-1.6.10-1.el7.x86_64.rpm 将用到的依赖上传到主机…...

vuex的五个属性及使用方法示例

一&#xff0c;Vuex简介 Vuex是Vue.js的状态管理库&#xff0c;它通过中心化的状态管理使得组件间的数据共享更加容易。 Vuex包含五个核心属性&#xff1a;state、getters、mutations、actions和modules。 Vuex是Vue.js的状态管理库&#xff0c;它提供了一种集中式存储管理应…...

9.SpringSecurity核心过滤器-SecurityContextPersistenceFilter

SpringSecurity核心过滤器-SecurityContextPersistenceFilter 一、SpringSecurity中的核心组件 在SpringSecurity中的jar分为4个&#xff0c;作用分别为 jar作用spring-security-coreSpringSecurity的核心jar包&#xff0c;认证和授权的核心代码都在这里面spring-security-co…...

23种设计模式-桥接模式

概念 桥接模式是一种结构型设计模式&#xff0c;它通过将抽象与其实现分离来解耦。它使用接口&#xff08;抽象类&#xff09;作为桥梁&#xff0c;将一个抽象类与其实现类的代码分别独立开来&#xff0c;从而使它们可以各自独立地变化。桥接模式的核心思想是“组合优于继承”…...

TCP PMTU 静态路由

HTTP协议 --- 超文本传输协议TCP --- 80端口超文本 --- 包含有超链接link和多媒体元素标记的文本TCP协议是一种面向连接的可靠性传输协议面向连接&#xff1a;数据在传输前&#xff0c;收发双方建立一条逻辑通道。可靠性确认机制&#xff1a;传输确认&#xff0c;每接受一个数据…...

Android动画——属性动画

在属性动画中&#xff0c;常用到的API有ValueAnimator&#xff0c;ObjectAnimator。ValueAnimator&#xff1a;时间引擎&#xff0c;负责计算各个帧的属性值&#xff0c;基本上其他属性动画都会直接或间接继承它&#xff1b;ObjectAnimator&#xff1a; ValueAnimator 的子类&a…...

华为OD机试真题Python实现【寻找连续区间】真题+解题思路+代码(20222023)

寻找连续区间 题目 给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Python)真题目录汇总 ## 输入 第一行两个整数N x (0 < N <= 100000 ,0 <= x <=…...

15. 三数之和

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 …...

40-Golang中的文件

Golang中的文件基本介绍文件的打开和关闭读文件操作应用实例写文件操作实例判断文件是否存在基本介绍 文件在程序中是以流的形式存在的 流&#xff1a;数据在数据源(文件)和程序(内存)之间经历的路程 输入流&#xff1a;数据从数据源到程序之间的路径 输出流&#xff1a;数据…...

Springboot整合RabbitMQ并使用

1、Springboot整合RabbitMQ 1、引入场景启动器 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>引入AMQP场景启动器之后&#xff0c;RabbitAutoConfiguratio…...

Java中方法引用(引用静态方法、引用成员方法(引用其他类的成员方法、引用本类的成员方法、引用父类的成员方法)、引用构造方法、其他调用方式、小练习)

方法引用&#xff1a;把已经存在的方法拿过来用&#xff0c;当作函数式接口中抽象方法的方法体 我们前面学到Arrays工具类中的sort方法&#xff0c;当我们需要指定排序规则时&#xff0c;需要传递Comparator接口的实现类对象&#xff0c;我们之前使用匿名内部类类的形式作为参…...

整理了100道关于Python基础知识的练习题,记得收藏~

实例1.数字组合 题目&#xff1a; 有四个数字&#xff1a;1、2、3、4&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;各是多少&#xff1f; 程序分析&#xff1a; 遍历全部可能&#xff0c;把有重复的剃掉。 total0 for i in range(1,5):for j in range(…...

OSG三维渲染引擎编程学习之七十七:“第七章:OSG场景图形交互” 之 “7.8 场景交互”

目录 第七章 OSG场景图形交互 7.8 场景交互 7.8.1 osgGA库 7.8.2 事件消息处理 7.8.3 程序抓图示例...

797.差分

输入一个长度为 n的整数序列。 接下来输入 m个操作&#xff0c;每个操作包含三个整数 l,r,c&#xff0c;表示将序列中 [l,r] 之间的每个数加上 c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数 n和 m。 第二行包含 n个整数&#xff0c;表示整数序列。 …...

为什么说要慎用BeanUtils,因为性能真的拉跨

1 背景之前在专栏中讲过“不推荐使用属性拷贝工具”&#xff0c;推荐直接定义转换类和方法使用 IDEA 插件自动填充 get / set 函数。不推荐的主要理由是&#xff1a;有些属性拷贝工具性能有点差有些属性拷贝工具有“BUG”使用属性拷贝工具容易存在一些隐患&#xff08;后面例子…...

【项目设计】高并发内存池(六)[细节优化+测试]

&#x1f387;C学习历程&#xff1a;入门 博客主页&#xff1a;一起去看日落吗持续分享博主的C学习历程博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 也许你现在做的事情&#xff0c;暂时看不到成果&#xff0c;但不要忘记&…...

同模块设置不同应用主题方案

有时候公司内部会有不同应用但是有部分模块功能一样&#xff0c;只根据应用角色有些细节逻辑区分的场景。这时候往往采用模块化采用以应用至不同的APP。如果APP主题不一致&#xff0c;该如果解决。 方案&#xff1a; 在不同应用的config.gradle 下面根据不同应用定义不同的a…...

centos7 安装 hyperf

​​​​​​PHP > 7.4 Swoole PHP 扩展 > 4.5&#xff0c;并关闭了 Short Name OpenSSL PHP 扩展 JSON PHP 扩展 PDO PHP 扩展 Redis PHP 扩展 Protobuf PHP 扩展 composer create-project hyperf/hyperf-skeleton 推荐安装项 全部选n php.ini [swoole] extens…...

加强网站硬件建设/网站seo怎么做

结束了前面的《Spring 源码深度学习》&#xff0c;八月给自己放松了一下&#xff0c;看了几本小说和电视剧&#xff0c;还有写一个工作中用到的小工具&#xff0c;周报数据渲染的前端界面&#xff08;前端是真的难&#xff09;。 当然技术上的学习也要注意&#xff0c;所以看了…...

dw做网站背景音乐/江门网站建设

最近在用element-ui遇到一些bug,在使用el-select时,数据量大了就页面渲染缓慢从而卡顿严重,为了解决这个问题,对element-ui进行了改造,el-select改为分页滚动加载: 如上图所示的效果,大数据时下拉可以分页滚动加载,而且可以支持原来的搜索。 1.新建一个selectSearch.v…...

推广一个网站周期/针对大学生推广引流

https://blog.csdn.net/qq_15230053/article/details/82720282...

网站首页做301/成都seo优化排名推广

是为了后面附加and ...方便程序逻辑处理用的&#xff0c; 要不然你就得稍微复杂一点儿处理&#xff1a; 有where条件。。。 没有where条件。。。 11 是永恒成立的&#xff0c;意思无条件的&#xff0c;也就是说在SQL语句里有没有这个11都可以。 这个11常用于应用程序根据用户选…...

湖南城乡建设厅网站/aso优化的主要内容为

所有被盗过号的 游戏玩家&#xff0c;都对黑客咬牙切齿&#xff0c;他让你损失的不仅是一个帐号&#xff0c;更是一套顶级装备&#xff0c;365天黑天摸地的练级&#xff0c;甚至是游戏中的荣耀。 游戏黑客究竟是什么样的神秘人物&#xff0c;又是如何把你的帐号盗走&#xff0c…...

利用帝国cms网站建设/关键词优化推广

Nodejs提供了net模块和dgram实现TCP和UDP数据通信 1.创建TCP服务器 2.监听客户端连接的socket端口对象 3.向客户端发送数据 4.UDP客户端和服务器通信 5.UDP服务器向客户端组播数据 1.net模块基于TCP的数据通信 1)创建TCP服务器 var servernet.createServer([options],[connecti…...