[Java]Redission入门使用

news/2023/11/28 17:51:32

一、什么是Redission

Redission is a Java-based distributed cache and object storage framework. It provides a variety of distributed data structures and services, such as lists, sets, queues, maps, bitmaps, HyperLogLog, geospatial indexing, etc.
It supports Redis protocol and JCache API, and provides many features such as real-time statistics, Pub/Sub, Lua script writing, etc., making it more convenient for applications to use and manage distributed data.
It also has advantages such as high performance, high reliability, and scalability.

Redission是一个Java实现的分布式缓存和分布式对象存储框架,它提供了许多分布式数据结构和服务,如列表、集合、队列、映射、位图、HyperLogLog、Geospatial索引等。
它支持Redis协议和JCache API,并提供了许多功能,如实时统计、Pub/Sub、Lua脚本编写等,使得应用程序可以更加方便地使用和管理分布式数据。
同时也具有高性能、高可靠性和可扩展性等优势。

Based on high-performance async and lock-free Java Redis client and Netty framework.

基于高性能异步和无锁的Java Redis Client 和Netty。


二、入门使用

1、Maven依赖

<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.24.1</version>
</dependency>  

2、创建配置实例—— Create config object

Config config = new Config();
config.useClusterServers()// 集群状态扫描间隔时间,单位是毫秒.setScanInterval(2000)//cluster方式至少6个节点.addNodeAddress("redis://127.0.0.1:6379" ).addNodeAddress("redis://127.0.0.1:6380").addNodeAddress("redis://127.0.0.1:6381").addNodeAddress("redis://127.0.0.1:6382").addNodeAddress("redis://127.0.0.1:6383").addNodeAddress("redis://127.0.0.1:6384");

or read config from file

或者读取配置文件

Config config = Config.fromYAML(new File("config-file.yaml")); 

3、创建Redission实例—— Create Redisson instance

// Sync and Async API
RedissonClient redisson = Redisson.create(config);

4. Get Redis based implementation of java.util.concurrent.ConcurrentMap

RMap<Object, Object> map = redisson.getMap("map_key");
RLock rLock = map.getLock("key");try {// lock 上锁rLock.lock();Object v = map.get(k);// todo 业务逻辑
} finally {rLock.unlock();
}

5. Get Redis based implementation of java.util.concurrent.locks.Lock

Redission加锁

设置过期时间为3秒的锁。

try {//获取锁对象RLock lock = redisson.getLock("my_key");//加锁lock.lock(3, TimeUnit.SECONDS);//todo 业务
} finally {lock.unlock();
}

若不设置过期时间,默认过期时间30秒,并触发Watchdog进行续期

try {//获取锁对象RLock lock = redisson.getLock("my_key");//加锁,默认过期30秒,并触发Watchdog进行续期lock.lock();//todo 业务
} finally {lock.unlock();
}

Watch Dog 的自动延期机制

如果一个拿到锁的线程正常执行任务但还没完成,那么看门狗会延长锁超时时间,锁不会因为超时而被释放。

看门狗默认续期时间是30s,可以通过修改Config.lockWatchdogTimeout指定时间。

如果使用lock方法传入过期时间leaseTime,那么超时自动解锁,不会触发Watch Dog延长时间。


6. Get Redis based implementation of java.util.concurrent.ExecutorService

RScheduledExecutorService executorService = redisson.getExecutorService("my_key");
//3秒时间后执行任务
executorService.schedule(()->{//todo 业务逻辑
},3,TimeUnit.SECONDS);//2秒后执行,每3秒执行一次
executorService.scheduleAtFixedRate(()->{//业务逻辑
}, 2,3,TimeUnit.SECONDS);//2秒后执行,每3秒执行一次
executorService.scheduleWithFixedDelay(()->{//业务逻辑
}, 2,3,TimeUnit.SECONDS);

7、等等…


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

相关文章

Leetcode 202 快乐数(HashSet,环形链表思想)

Leetcode 202 快乐数&#xff08;HashSet&#xff09; 解法1 &#xff1a; 用HashSet来检测循环:star:为什么说数字n的位数由log n给定呢&#xff1f;解法2 &#xff1a; 链表的思想[出现循环表示链表出现环]&#xff0c;使用快慢指针法 题目链接>>>>>>>&…

Qt 读写文件(QFileQTextStreamQDataStream) 详解

一、读写文本文件 (QFile 类) Qt QFile类是一个用于读取和写入文件的类&#xff0c;它提供了对文件的访问、读取和写入等操作。它既可以操作文本文件&#xff0c;也可以操作二进制文件。 QFile类的功能包括&#xff1a; 打开、关闭文件读取文件内容写入文件内容支持文本模式…

华为OD 数组求和(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…

tcp/ip协议和opc协议对比详解

TCP/IP协议和OPC协议是两种重要的网络协议&#xff0c;它们在不同的网络层级上运行&#xff0c;并为数据传输和通信提供了不同的功能。 TCP/IP协议&#xff08;Transmission Control Protocol/Internet Protocol&#xff0c;传输控制协议/互联网协议&#xff09;是互联网通信的…

对于高斯连续变量系统而言,它没有展现出量子霸权的特性 量子霸权是什么?

对于高斯连续变量系统而言&#xff0c;它没有展现出量子霸权的特性 量子霸权是什么? 对于高斯连续变量系统而言&#xff0c;它没有展现出量子霸权的特性的主要原因是&#xff0c;高斯连续变量系统的计算能力可以被经典计算机有效地模拟和仿真。高斯连续变量系统是指由一组连续…

【LeetCode】 387. 字符串中的第一个唯一字符

题目链接 文章目录 所有方法 复杂度 ( O ( n ) O(n) O(n)、 O ( ∣ Σ ∣ ) O(|\Sigma|) O(∣Σ∣)) Python3方法一&#xff1a;collections.Counter() 统计频次方法二&#xff1a;哈希映射 { key字符&#xff1a;value【首次出现的索引 or -1 出现多次】}方法三&#xff1a; c…

关于vant 的tabbar功能

1、想要实现tabbar页面A&#xff0c;其他的页面B&#xff08;非tabbar页面&#xff09;。 从A页面进入B页面&#xff0c;底部的active选中效果应该被取消掉&#xff0c;但是还是选中A。 按照官网的说法有两个方法 一、根据path路径 二、自定义的model 但是&#xff01;但是…

如何把Elasticsearch中的数据导出为CSV格式的文件

前言| 本文结合用户实际需求用按照数据量从小到大的提供三种方式从ES中将数据导出成CSV形式。本文将重点介Kibana/Elasticsearch高效导出的插件、工具集&#xff0c;通过本文你可以了解如下信息&#xff1a; 1&#xff0c;从kibana导出数据到csv文件 2&#xff0c;logstash导…

Youtrack Linux 安装

我们考虑最后应该使用的是 ZIP 方式的安装。 按照官方的说法如何设置运行 YouTrack 应该是非常简单的。 准备环境 根据官方的说法&#xff0c;我们需要做的就是下载 Zip 包&#xff0c;然后把 Zip 包解压到指定的目录中就可以了。 下载 当前官方的下载地址为&#xff1a;Ge…

大数据之LibrA数据库系统上下电管理

系统上电 操作场景 系统管理员进行例行维护停机后需要重新启动服务器与FusionInsight LibrA集群。如果安装双机Manager&#xff0c;上电后HA将确定主备管理节点。系统启动完成后需要启动依赖集群运行的上层业务。 对系统的影响 系统上电完成以前集群不可用。 前提条件 获…

高效恢复丢失的文件的10 款Android数据恢复工具

在当今快节奏的数字时代&#xff0c;从Android设备丢失重要数据可能是一场噩梦。 您需要一个可靠的恢复工具来取回您的数据&#xff0c;例如令人难忘的照片&#xff0c;重要的联系人&#xff0c;重要的工作文档等。 值得庆幸的是&#xff0c;有许多高效的Android数据恢复工具可…

VBA操作数据库

相关背景&#xff1a; 对于数据分析同学&#xff0c;一般SQL&#xff0c;EXCEL是必备技能&#xff0c;但对于VBA和Python可能有的同学不会&#xff1b;在处理本地数据上(诸如excel、txt|csv文本&#xff09;&#xff0c;后续尝试使用VBA或者Python写一个sql查询的GUI界面&…

华为OD 区间交集(200分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…

内核初始化的过程

内核的启动从入口函数 start_kernel() 开始。在 init/main.c 文件中&#xff0c;start_kernel 相当于内核的 main 函数。打开这个函数&#xff0c;你会发现&#xff0c;里面是各种各样初始化函数 XXXX_init。 在操作系统里面&#xff0c;先要有个创始进程&#xff0c;有一行指令…

Softing为连接PROFIBUS网络提供多种接口产品方案

一 应用广泛的PROFIBUS网络 PROFIBUS是基于统一、标准且独立于应用的通信协议。据PI-China统计&#xff0c;在工业领域里早已有近5090万个PROFIBUS设备被安装在了超过900万节点中。PROFIBUS网络的广泛应用得益于PROFIBUS协议的开放性——用户可以很方便地在PROFIBUS网络的任意…

全面超越AutoGPT,面壁智能联合清华NLP实验室开源大模型「超级英雄」XAgent

近日&#xff0c;国内领先的人工智能大模型公司面壁智能又放大招&#xff0c;联合清华大学 NLP 实验室共同研发并推出大模型「超级英雄」——XAgent。 通过任务测试&#xff0c;XAgent 在真实复杂任务的处理能力已全面超越 AutoGPT。 现已在 GitHub 正式开源&#xff0c;地址 …

Qt视图/模型

创建模型和单元格选择模型&#xff1a; QStandardItemModel* model new QStandardItemModel(2,6,this);//模型行数、模型列数、父对象 QItemSelectionModel* selection new QItemSelectionModel(model);//创建单元格选择模型 为tableView设置数据模型&#xff1a; ui.tabl…

d3dx9_43.dll丢失有什么办法可以解决,解决d3dx9_43.dll丢失

通常d3dx9_43.dll丢失都是在运行游戏时汤出的d3dx9_43.dll找不到的错误窗口&#xff0c;因为d3dx9_43.dll文件更多是在使用游戏时会被调用的dll文件&#xff0c;d3dx9_43.dll是属于DirectX9的一个组件&#xff0c;DirectX9是游戏系统中的一个重要程序&#xff0c;所以当d3dx9_4…

RabbitMQ运行机制和通讯过程介绍

文章目录 1.RabbitMQ 环境搭建2.RabbitMQ简介3.RabbitMQ的优势&#xff1a;4. rabbitmq服务介绍4.1 rabbitmq关键词说明4.2 消息队列运行机制4.3 exchange类型 5.wireshark抓包查看RabbitMQ通讯过程 1.RabbitMQ 环境搭建 参考我的另一篇&#xff1a;RabbitMQ安装及使用教程&am…

点云cloudpoint生成octomap的OcTree的两种方法以及rviz可视化

第一种&#xff1a;在自己的项目中将点云通过ros的topic发布&#xff0c;用octomap_server订阅点云消息&#xff0c;在octomap_server中生成ocTree 再用rviz进行可视化。 创建工作空间&#xff0c;记得source mkdir temp_ocotmap_test/src cd temp_ocotmap_test catkin_make…
最新文章