Redisson-分布式锁-闭锁

2023-10-29

Redisson-分布式锁-闭锁

引入必要依赖

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <!--            排除lettuce客户端,使用jedis客户端-->
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.3.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.redisson/redisson -->
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.13.6</version>
        </dependency>

配置redisson的bean-实例

package com.ligaixian.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyRedissonConfig {

    /**
     * redissonClient 单节点配置
     * @return
     */
    @Bean
    public RedissonClient redissonClient(){
        Config config = new Config(); 
        config.useSingleServer().setAddress("redis://127.0.0.1:6379");

        RedissonClient redissonClient = Redisson.create(config);
        return redissonClient;
    }

    /**
     * redissonClient 集群配置
     * @return
     */
    @Bean
    public RedissonClient redissonClient(){
        Config config = new Config();
        config.useClusterServers()
                .setScanInterval(2000) // 集群状态扫描间隔时间,单位是毫秒
                //可以用"rediss://"来启用SSL连接
                .addNodeAddress("redis://127.0.0.1:7000", "redis://127.0.0.1:7001")
                .addNodeAddress("redis://127.0.0.1:7002");

        RedissonClient redissonClient = Redisson.create(config);
        return redissonClient;
    }
}

redisson实现分布式锁-闭锁

/**
     * 实现redisson 闭锁
     *
     * @return
     */
    @GetMapping("/lockDoor")
    public String loclDoor() {
        RCountDownLatch door = redissonClient.getCountDownLatch("door");
        door.trySetCount(5);
        try {
            door.await(); //等待闭锁都完成
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "关门了";
    }

    @GetMapping("/gogogo/{id}")
    public String gogogo(@PathVariable("id") Integer id) {
        RCountDownLatch door = redissonClient.getCountDownLatch("door");
        door.countDown(); //计数器减一

        return id + "班的人都走了";
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redisson-分布式锁-闭锁 的相关文章

  • 带 Java 客户端的键值数据库

    我基本上想在磁盘上存储一个哈希表 以便以后可以查询它 我的程序是用Java 编写的 哈希表从字符串映射到列表 那里有很多键值存储 但经过大量研究 阅读后 尚不清楚哪一个最适合我的目的 以下是一些对我来说很重要的事情 简单的键值存储 允许您使
  • 是否可以使用带有 FUSE 文件系统的 Linux VFS 缓存?

    默认情况下 Linux VFS 缓存似乎不适用于 FUSE 文件系统 例如 read 调用似乎被系统地转发到 FUSE 文件系统 我在 FUSE 特定的远程文件系统上工作 我需要一个非常积极的缓存 我需要实现自己的页面缓存吗 或者是否可以为
  • Redis多插入问题

    我尝试多次插入 但它给了我错误 http pastie org 7337421 http pastie org 7337421 cat mass insert txt 3 r n 3 r nSET r n 3 r nkey r n 5 r
  • Redis 写入 .ssh/authorized_keys

    当前设置 2 个主服务器 12 个工作服务器 工作人员通过 ssh copy id 连接到主设备 主设备和工作人员正在主设备上的 redis 队列中写入数据 过去一周我遇到的问题是 Redis 正在将数据写入authorized keys
  • 如何清理redis中不活跃的玩家?

    我正在制作一个使用 redis 来存储游戏状态的游戏 它可以很好地跟踪位置和玩家 但我没有一个好的方法来清理不活跃的玩家 每当玩家移动时 这是一个半慢速移动游戏 想想每秒 1 5 帧 我就会用新位置更新哈希并删除旧位置键 跟踪活跃玩家的最佳
  • AWS Redis 从外部连接

    有没有办法从外部 AWS 网络连接 AWS 上托管的 Redis 实例 我有一个基于 Windows 的 EC2 实例在 AWS 上运行 另一个是 Redis 缓存节点 我知道有人问过这个问题 但答案是在基于 Linux 的系统中 但我的是
  • 如何在redis中创建自己的数据库?

    There are 0 to 15 databases in redis 我想使用 redis cli 创建自己的数据库 有什么命令可以实现吗 Redis 数据库并不等同于 MySQL 等 DBMS 中的数据库名称 这是一种为键创建隔离和命
  • socket.io redis 和内存泄漏

    我的socket io版本是 电子邮件受保护 cdn cgi l email protection and 电子邮件受保护 cdn cgi l email protection 我在 Windows 上 在某些地方 我看到问题已得到解决 我
  • redis集群不断打印日志WSA_IO_PENDING

    当我启动redis集群的所有redis服务器时 所有这些服务器不断打印类似WSA IO PENDING clusterWriteDone的日志 9956 03 Feb 18 17 25 044 WSA IO PENDING writing
  • 如何设置 Celery 以通过 ssl 与 Azure Redis 实例对话

    使用 的伟大答案 如何在microsoft azure上的django项目中配置celery redis https stackoverflow com questions 39616701 how to configure celery
  • 是否有可嵌入的 Java 替代 Redis?

    根据这个线程 https stackoverflow com questions 3047010 best redis library for java 如果我想从Java中使用Redis Jedis是最好的选择 然而 我想知道是否有任何库
  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • Caffeine Expiry 中如何设置多个过期标准?

    我正在使用 Caffeine v2 8 5 我想创建一个具有可变到期时间的缓存 基于 值的创建 更新以及 该值的最后一次访问 读取 无论先发生什么都应该触发该条目的删除 缓存将成为三层值解析的一部分 The key is present i
  • 通过 StackExchange.Redis 连接到 Redis Servier

    我尝试使用以下方法制作一个测试项目Redis https redis io服务器 通过 Virtual Box 安装在 Linux Ubuntu 虚拟机上 Linux 机器通过 Virtual Box 的桥接适配器与本地网络连接 Virtu
  • 在 aws-elasticache 上使用 memcached 或 Redis

    我正在 AWS 上开发一个应用程序 并使用 AWS elasticache 进行缓存 我对使用 memcached 或 redis 感到困惑 我阅读了有关 redis 3 0 2 更新以及它现在如何等同于 memchached 的文章 ht
  • 使用Redis从有限范围内生成唯一ID

    我有一些数据库项目 除了主键之外 还需要项目所属组的唯一索引 我们来调用属性nbr 以及将项目分组在一起并定义唯一范围的属性nbr 我们会打电话group This nbr必须在 1 N 范围内 并且may从外部源导入项目时进行设置 由于所
  • Redis发布/订阅:查看当前订阅了哪些频道

    我目前有兴趣查看我拥有的 Redis 发布 订阅应用程序中订阅了哪些频道 当客户端连接到我们的服务器时 我们将它们注册到如下所示的通道 user user id 这样做的原因是我希望能够看到谁 在线 目前 我在不知道客户端是否在线的情况下盲
  • 如何在Redis中从hmset()切换到hset()?

    我收到弃用警告 即 Redis hmset 已弃用 请改用 Redis hset 但是 hset 采用第三个参数 我不知道是什么name应该是 info users 10 timestamp datetime utcnow strftime
  • Lua中按字符分割字符串

    我有像这样的字符串 ABC DEF 我需要将它们分开 字符并将两个部分分别分配给一个变量 在 Ruby 中 我会这样做 a b ABC DEF split 显然Lua没有这么简单的方法 经过一番挖掘后 我找不到一种简短的方法来实现我所追求的
  • 为什么 Redis TimeSeries 不捕获聚合中的最后一个元素?

    我试图了解 Redis 的时间序列规则创建的工作原理 但我很困惑为什么 Redis 会忽略聚合中的最后一项 并想知道这是否是预期的行为 我在中创建了示例代码redis cli为了显示 127 0 0 1 6379 gt FLUSHALL O

随机推荐

  • 408知识点-计算机组成原理

    计算机组成原理 408系列参考王道2021系列书籍 文章目录 计算机组成原理 前言 绪论 数据的表示 存储系统 指令系统 中央处理器 总线 输入 输出系统 总结 前言 今天正式放假 虽然已经咸鱼了三周了 考研初试结束 把我记在我的笔记本上的
  • 华为OD机试 - 字符串分割(二)(Java)

    题目描述 给定一个非空字符串S 其被N个 分隔成N 1的子串 给定正整数K 要求除第一个子串外 其余的子串每K个字符组成新的子串 并用 分隔 对于新组成的每一个子串 如果它含有的小写字母比大写字母多 则将这个子串的所有大写字母转换为小写字母
  • PDF转换工具

    分享书籍 数据 软件等资料 分享考研经验 导师选择 读研故事 科研技巧 软件包括 PDF转换工具 Photoshop Python Matlab Spss CAD SQL R语言 Mysql等软件 公众号内 回复软件名称即可获取
  • Java【抽象类和接口】是什么?

    文章目录 前言 一 抽象类 1 什么是抽象类 2 抽象类的特征 3 抽象类的作用 二 接口 1 什么是接口 2 语法规范 3 接口的使用 4 接口的特征 5 实现多个接口 6 接口间的继承 总结 前言 各位读者好 我是小陈 这是我的个人主页
  • java发起http请求调用post和get接口

    一 java调用post接口 1 使用URLConnection或者HttpURLConnection java自带的 无需下载其他jar包 URLConnection方式调用 如果接口响应码被服务端修改则无法接收到返回报文 只能当响应码正
  • 机器学习 —— 朴素贝叶斯

    朴素贝叶斯 贝叶斯公式 P A B P A P B A P B 一个例子 现分别有 A B 两个容器 在容器 A 里分别有 7 个红球和 3 个白球 在容器 B 里有 1 个红球和 9 个白球 现已知从这两个容器里任意抽出了一个球 且是红球
  • JVM-垃圾回收

    目录 1 如何判断对象可以回收 1 1引用计数法 1 3四种引用 1 3 1强引用 1 3 2软引用 1 3 3弱引用 1 3 4虚引用 1 3 5终结器引用 2 垃圾回收算法 2 1标记清除 2 2标记整理 2 3复制 3 分代垃圾回收
  • unity游戏关卡解锁和未解锁时的不同图片以及可或不可按下

    若想让按钮不可按只要将interactable的勾勾关掉就可以了 一般用做未解锁的关卡 public void UpdateOnce 用于更新过关数 没解锁的抑制 for int i 0 i
  • 分享web前端七款HTML5 Loading动画特效集锦

    以前我们大部分的Loading动画都是利用gif图片实现的 这种图片实现Loading动画的方法虽然也很不错 但是作为HTML5开发者来说 如果能利用HTML5和CSS3实现这些超酷的Loading动画 那将是一件非常痛快的事情 1 HTM
  • 生产环境elasticsearch的配置建议

    以下主要来自官方文档 主要分为几块 硬件方面 内存 CPU 硬盘 网络 其他 操作系统 较大的文件描述符 设置MMap 管理工具 JVM虚拟机 请不要调整JVM设置 请不要修改垃圾收集器 给lucene留下一半的内存空间 不要超过32G 避
  • CentOS7安装Oracle数据库的全流程

    一 准备工作 1 下载Oracle的安装介质 Oracle 11g R2 Linux版本有两个压缩文件包 都需下载安装才会完整 linux x64 11gR2 database 1of2 zip linux x64 11gR2 databa
  • ip 和 iphdr

    1 struct ip 和struct iphdr struct ip if BYTE ORDER LITTLE ENDIAN u char ip hl 4 header length ip v 4 version endif if BYT
  • 数组也是对象

    一个对象中的属性名不仅仅是字符串格式 还有可能是数字格式的 当我们存储的属性名不是字符串也不是数字的时候 浏览器会把这个值转换为字符串 toString 然后在进行存储 obj 300 gt 先把 toString 后的结果作为对象的属性名
  • 处理递归数据的键名

    tortoise data 使用递归函数 if data data length lt 0 递归的出口 return null return data map e gt 循环数据 const model name e label id e
  • 剑指offer 学习笔记 圆圈中最后剩下的数字

    面试题62 圆圈中最后剩下的数字 0 1 n 1这n个数字排成一个圆圈 从数字0开始 每次从这个圆圈里删除第m个数字 求出这个圆圈里剩下的最后一个数字 本题就是约瑟夫环问题 法一 用环形链表模拟圆圈 我们可以直接用标准库的list模拟环形链
  • [转]怎样在systemverilog DPI中调用SV,C与C++(二)

    有的时候需要交互struct union数据类型 下面举个简单例子 在SV里定义这个一个结构体 typedef struct int id string name xaction 同样的 在C里定义同样的结构体 结构体名可以不一致 type
  • Android 数据库框架GreenDao

    参考详情网站 Android 数据库框架 GreenDao org greenrobot greendao 起航 当风起时的博客 CSDN博客
  • java的string常用方法_java中String类的常用方法

    public class HelloWorld public static void main String args Java文件名 String fileName HelloWorld java 邮箱 String email laur
  • Pandas分组、聚合、过滤操作全面解析!

    gt gt gt import numpy as np gt gt gt import pandas as pd gt gt gt df pd read csv data table csv index col ID gt gt gt df
  • Redisson-分布式锁-闭锁

    Redisson 分布式锁 闭锁 引入必要依赖