首页 > 数据库 >java使用redis 加锁

java使用redis 加锁

时间:2024-01-24 12:01:44浏览次数:45  
标签:加锁 java redis redisCache key 工单 return public

配置类:

public class RedisLockUtil {
    private static RedisCache redisCache = null;

    /**
     * 给 key 加锁,如果加锁成功,则返回true,加锁失败返回false
     * @return
     */
    public static boolean lock(String key,Integer timeout, TimeUnit timeUnit){
        if (redisCache == null){
            redisCache = SpringUtil.getBean(RedisCache.class);
        }
        return redisCache.setIfAbsent("LVS_LOCK:"+key,0,timeout, timeUnit);
    }

    public static boolean unLock(String key){
        if (redisCache == null){
            redisCache = SpringUtil.getBean(RedisCache.class);
        }
        return redisCache.deleteObject("LVS_LOCK:"+key);
    }
}

示例:

    public void createWoBoxByWo(CuxWipJobSchedule schedule) {
        String lockKey = "CreateWoBox:" + schedule.getJobName();
        // 创建生成工单SN
        if (!RedisLockUtil.lock(lockKey, 1, TimeUnit.HOURS)) {
            // 存在锁
            log.info("检查工单SN存在锁:" + schedule.getJobName());
            return;
        }
        log.info("进入到检查工单");

        try {
            // 执行检查工单外箱已经外箱SN方法
           

        } catch (Exception e) {
            log.error("", e);
        } finally {
            RedisLockUtil.unLock(lockKey);
        }
    }

 

标签:加锁,java,redis,redisCache,key,工单,return,public
From: https://www.cnblogs.com/jessi200/p/17984359

相关文章

  • 探讨Java死锁的现象和解决方法
    死锁是多线程编程中常见的问题,它会导致线程相互等待,无法继续执行。在Java中,死锁是一个需要注意和解决的重要问题。让我们通过一系列详细的例子来深入了解Java死锁的现象和解决方法。1.什么是死锁?死锁是指两个或多个线程在互相等待对方释放锁资源的情况下,导致程序无法继续执行的......
  • Java中的MinIO应用类--版本2
    1.配置类importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importio.minio.MinioClient;@Configuration@Configuratio......
  • Java工具类强推:Hutool
    官方文档:https://www.hutool.cn/docs/#/Github地址:https://github.com/dromara/hutoolGitee地址:https://gitee.com/dromara/hutool❓背景灵魂拷问1:还在为新项目工具类搬迁而烦恼?灵魂拷问2:还在为项目中工具类维护而烦恼?......
  • JAVA学习笔记--输出HelloWorld
    HelloWorld!写出人生第一个代码~随便新建一个文件夹用于存放代码新建一个Java文件新建一个名为Hello的txt文件或其他文本文件,将后缀名改为.java注意:如果系统没有显示文件后缀名,则需要手动打开在Hello.java文件中编写以下代码:publicclassHello{ publicstaticvoi......
  • JAVA学习笔记--JDK安装及环境变量配置
    Java开发环境搭建卸载JDK找到JDK的安装路径,删除JDK的整个文件夹删除JAVA_HOME(右击我的电脑-->属性-->高级系统设置-->环境变量,即可找到JAVA_HOME)删除path下关于java的目录在终端输入java-version,若显示'java'不是内部或外部命令,也不是可运行程序或批处理文件,则成......
  • JAVA学习笔记--常见的Dos命令
    基本的Dos命令打开cmd的方法以管理员的身份打开:开始--->命令提示符(Win11)Win键+R-->输入cmd打开控制台(推荐使用)在任意文件夹下,按住shift键+鼠标右键点击,在此处打开命令行窗口资源管理器的地址栏前面加上cmd路径(注意:cmd后有空格)常见的Dos命令##盘符切换输入想要切换到......
  • java8 函数式(Functional)接口
    什么是函数式(Functional)接口 只包含一个抽象方法的接口,称为函数式接口。 你可以通过Lambda表达式来创建该接口的对象。(若Lambda表达式抛出一个受检异常(即:非运行时异常),那么该异常需要在目标接口的抽象方法上进行声明)。 我们可以在一个接口上使用@FunctionalInterfa......
  • javaScript找出两个数组之中不同的元素
    在JavaScript中,我们可以使用以下方法找到两个数组中不同的元素:1.创建一个函数,将两个数组作为参数传递进去。2.在函数内部,创建一个新的空数组,用于存储不同的元素。3.使用for循环遍历第一个数组,并使用indexOf()方法检查第二个数组中是否存在相同的元素。4.如果第二个数组中......
  • java8找出两个集合List<Employee> 中 id相同的元素,再将别的属性合并,放在新的集合里面
    可以使用Java8的StreamAPI来实现这个需求。具体步骤如下:1.创建一个新的集合,用于存放合并后的元素。2.使用Stream的filter()方法过滤出id相同的元素。3.使用Stream的map()方法将id相同的元素合并成一个新的元素,其中别的属性可以通过自定义的合并规则来实现。4.使用Stream的c......
  • Java开发者的Python快速进修指南:探索15种独特的Python特殊方法
    概述在Python中,特殊方法(也称为魔术方法)是由Python解释器自动调用的,我们不需要手动调用它们,而是使用内置函数来间接地使用它们。举个例子,我们可以实现特殊方法__len__(),然后通过使用内置函数len()来获取对象的长度。同样地,一些特殊方法的调用是隐式的,比如在使用for循环时,实际上是......