Redis 整合中 Redisson 的使用

news2024/11/24 2:20:32

大家好 , 我是苏麟 , 今天带来 Redisson 使用 .

官方文档 :  GitHub - redisson/redisson: Redisson - Easy Redis Java client with features of In-Memory Data Grid. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache ...

 

引入依赖

        <!--https://github.com/redisson/redisson#quick-start-->
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.23.2</version>
        </dependency>

 yml配置(例如)

  #redis 配置
  redis:
    port: 6379
    database: 1
    host: localhost

Redisson配置

@Data
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
public class RedissonConfig {

    private String host;

    private String port;

    @Bean
    public RedissonClient redissonClient(){
        // 1.创建配置
        Config config = new Config();

        String redissonAddress = String.format("redis:/%s:%s",host,port);

        //useClusterServers()集群
        //setDatabase() 设置那个redis库
        config.useSingleServer().setAddress(redissonAddress).setDatabase(2);


        //2.创建实例
        RedissonClient redissonClient = Redisson.create(config);
        return  redissonClient;
    }
}

 这里@ConfigurationProperties(prefix = "spring.redis")用法请看 : 读取/加载 properties/yml 配置文件_踏遍三十六岸的博客-CSDN博客


像操作本地集合一样操作Redisson


@SpringBootTest
class UserCenterApplicationTests {

    @Resource
    private RedissonClient redissonClient;

    @Test
    void test() {
        //list操作 数据存在 JVM 内存中
        List<String> list = new ArrayList<>();
        list.add("sl");
        System.out.println(list.get(0));
        list.remove(0);

        //数据存在 Redis 内存中
        //getList()取列表名字 因为 redis 中是 key-value 存在
        RList<String> rList = redissonClient.getList("redisson-list");
        rList.add("sl-redisson");
        System.out.println(rList.get(0));
        rList.remove(0);    

    }

   
    @Test
    void hashTest(){

        //哈希操作
        RMap<String, String> rMap = redissonClient.getMap("LiJiaWei");
        //设置 map 中的 key - value
        rMap.put("sl","1");
        rMap.put("jw","2");

        System.out.println(redissonClient.getMap("LiJiaWei").get("sl"));
        System.out.println(redissonClient.getMap("LiJiaWei").get("jw"));

        redissonClient.getMap("LiJiaWei").remove("sl");
        redissonClient.getMap("LiJiaWei").remove("jw");
    }

    //......
    //其他操作都一样
}

Redssion 分布式锁

@Component
public class PreScheduled {


    @Resource
    private RedissonClient redissonClient;


    /**
     * 每天执行
     */
    @Scheduled(cron = "0 59 23 * * *")
    public void doCah() {
        //获取锁 , 可重入  指定锁的名称
        RLock lock = redissonClient.getLock("sl:redisson:cache:lock");


        try {
            /**
             * 只有一个线程获取到锁
             * 等待时间 , 执行时间 , 毫秒
             */
            if (lock.tryLock(0, 30000L, TimeUnit.MILLISECONDS)) {
              
                      //...
         
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            /**
             * 只能释放自己加的锁
             */
            if (lock.isHeldByCurrentThread()) {
                lock.unlock();
            }
        }
    }
}

感兴趣的小伙伴可以自行了解下面知识!

Redisson的可重入锁原理

Redisson看门狗WatchDog机制

Redisson的multiLock原理


这期就到这里 , 拜拜 !

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

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

相关文章

DC电源模块关于高效率的特点

DC电源模块关于高效率的特点 DC电源模块是目前应用广泛的电源系统之一&#xff0c;它的高效率是其最为显著地特点之一。本文将从以下三个方面进行介绍&#xff1a;什么是DC电源模块、DC电源模块的工作原理以及DC电源模块的高效率特点。 一、什么是DC电源模块 DC电源模块是一种…

使用 KubeBlocks 为 K8s 提供稳如老狗的数据库服务

原文链接&#xff1a;https://forum.laf.run/d/994 大家好&#xff01;今天这篇文章主要向大家介绍 Sealos 的数据库服务。在 Sealos 上数据库后端服务由 KubeBlocks 提供&#xff0c;为用户的数据库应用保驾护航。无论你是在公有云还是本地环境中使用&#xff0c;Sealos 都能为…

基于JavaEE的ssm公司员工信息管理系统的设计与实现

基于JavaEE的ssm公司员工信息管理系统的设计与实现043 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存…

这么深入浅出理解k8s集群控制器,能行!

1、控制器&#xff0c;是k8s集群的“大脑” 控制器本身对我们来说并不陌生的。我们每天使用的洗衣机、冰箱、空调等&#xff0c;都是依靠控制器才能正常工作 K8S集群的核心组件逻辑上可以被分为三个部分&#xff1a;核心组件etc数据库&#xff0c;对etcd进行直接操作的入口组…

科学家使用DL和其他工具预测2019年新型冠状病毒宿主和传染性

一项新的研究表明&#xff0c;2019年新型冠状病毒&#xff08;2019-nCoV&#xff09;的人与人之间的传播可能早在2019年12月中旬就开始了。这些发现与武汉市卫生健康委员会在12月底或1月初的声明相矛盾&#xff0c;即“没有发现2019-nCoV在人与人之间传播的重要证据”。 这项研…

Netty核心源码解析(二)--ServerBootstrap启动过程

serverbootstrap用于建立netty服务端&#xff0c;核心逻辑-- 设置线程池-- bossGroup和workGroup设置accept连接handler定义服务器的serversocketchannel实现设置IO读写的业务逻辑相关childHanlder绑定监听端口-- 创建serversocketchannel对象初始化serversocketchannel--添加…

【HCIP】13.BGP选路

每条BGP路由至少携带3个属性&#xff0c;目的影响选路。 基本概念 公认必遵&#xff1a;所有厂家设备都要识别的属性&#xff1b;发送路由时必须携带的属性公认任意&#xff1a;所有厂家设备都要识别的属性&#xff1b;发送路由时候可以携带也可以不携带可选过渡&#xff1a;…

iPad怎么录屏?不会录屏?一步步教你操作!

ipad作为一款受欢迎的移动设备&#xff0c;不仅在娱乐和办公中发挥着重要作用&#xff0c;还可以用于创作和分享。录屏功能作为ipad的一项重要特性&#xff0c;允许用户将屏幕上的活动记录成视频&#xff0c;以便用于演示、教学、分享等用途。可是您知道ipad怎么录屏吗&#xf…

JVS低代码中表单引擎与逻辑引擎是如何联合调用外部API的?

在企业项目中&#xff0c;常常出现需要给外部系统提供一个api &#xff0c;让外部系统触发调用&#xff0c;本系统直接数据入库&#xff0c;那么我们来看看jvs的表单引擎与逻辑引擎联合实现这个功能&#xff0c;先看实现效果&#xff1a; 配置步骤&#xff1a; 一、配置列表页…

算法竞赛入门【码蹄集新手村600题】(MT1200-1220)C语言

算法竞赛入门【码蹄集新手村600题】(MT1200-1220&#xff09;C语言 目录MT1201 强数MT1202 克里希那穆提数MT1203 字母矩阵MT1204 字母三角MT1205 倒三角MT1206 金字塔MT1207 倒金字塔MT1208 菱形MT1209 沙漏MT1210 弗洛伊德三角MT1211 给定数字的乘法表MT1212 乘法表MT1213 x个…

春秋云境:CVE-2021-41402(flatCore-CMS v2.0.8 RCE)

目录 一、题目 1.一句话木马&#xff1a; 2.命令执行木马&#xff1a; 一、题目 靶标介绍&#xff1a; flatCore-CMS v2.0.8 存在后台任意代码执行漏洞 进入题目&#xff1a; robots.txt目录&#xff1a; /acp后台&#xff1a; admin/12345678 “Addons”-- “Installier…

海外移动应用广告变现平台——AdMob特点

海外的移动互联网广告平台非常多&#xff0c;比如 Admob、Facebook Audience Network、Applovin MAX、Unity、Vungle、Mopub、Amazon、Pubmatic、Fyber等等。 根据《2020全球手游广告买量投放与变现报告》&#xff0c;各国Top收益广告平台&#xff08;针对游戏产品&#xff09…

回归预测 | MATLAB实现SSA-RF麻雀搜索优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SSA-RF麻雀搜索优化算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SSA-RF麻雀搜索优化算法优化随机森林算法多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;…

【算法日志】动态规划刷题:路径数问题(day34)

代码随想录刷题60Day 目录 前言 不同路径 不同路径(2) 前言 今天的动态规划题与昨天的题很类似&#xff0c;只不过今天的题是在二维上讨论&#xff0c;难度上略有提升。 不同路径 int uniquePaths(int m, int n) {vector<int> dp(n 1, 1);for (int i 1; i < m; …

问道管理:股票印花税是多少?印花税降低有何影响?

股票印花税&#xff0c;是指对证券商场上买卖、承继、赠与所确立的股权转让根据&#xff0c;按买卖额纳税。那么&#xff0c;我国股票印花税是多少&#xff1f;印花税下降有何影响&#xff1f;问道管理为我们预备了相关内容&#xff0c;以供参考。 股票印花税是多少&#xff1f…

初始C语言(7)——详细讲解有关初阶指针的内容

系列文章目录 第一章 “C“浒传——初识C语言&#xff08;1&#xff09;&#xff08;更适合初学者体质哦&#xff01;&#xff09; 第二章 初始C语言&#xff08;2&#xff09;——详细认识分支语句和循环语句以及他们的易错点 第三章 初阶C语言&#xff08;3&#xff09;——…

C++信息学奥赛2049:【例5.19】字符串判等

这段代码的功能是比较两个输入的字符串是否相等&#xff08;忽略大小写和空格&#xff09;&#xff0c;并输出 “YES” 或 “NO”。 解析注释后的代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {string arr; // 定义字符串变量arr&…

Python网络爬虫入门到实战

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 网络爬虫&#xff08;We…

C++信息学奥赛1130:找第一个只出现一次的字符

这段代码的功能是找出输入字符串中第一个重复出现的字符&#xff0c;并输出该字符。 解析注释后的代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {string arr;getline(cin, arr); int a0;for(int i0;i<arr.length();i){for(int j0;j…

怎么看电脑型号?5个方法,快速查看!

“弟弟快上大学了&#xff0c;想给他买一部性价比好一点的电脑&#xff0c;但是我对电脑又不太熟悉&#xff0c;请问大家怎么查看电脑型号呢&#xff1f;感谢回答&#xff01;” 每台电脑不一样&#xff0c;它的电脑型号也可能有差别。电脑型号是指一台电脑特定的标识&#xff…