首页 > 其他分享 >分布式锁

分布式锁

时间:2024-07-01 18:24:36浏览次数:17  
标签:serviceNo confirmReceiving log error 分布式 Op

/**
     * 设置redis分布式锁
     *
     * @param keyType 分布式锁类型
     * @param hKey    分布式锁键值
     * @return 对象列表
     */
    public boolean getRedisTempLock(final String keyType, final String hKey, long tempValue) {
        String key = keyType.concat(hKey);
        Boolean result = redisTemplate.opsForValue().setIfAbsent(key, tempValue, 5, TimeUnit.MINUTES);
        return result != null && result;
    }
if (redisUtil.getRedisTempLock(OrderOutType.RECEIVING_GOODS.getType(), serviceNo,
                System.currentTimeMillis())) {
                log.info("Op:confirmReceiving, Locked:{} successfully.", serviceNo);
            } else {
                log.error("Op:confirmReceiving, Locked:{} fail!", serviceNo);
                return BaseExResponse.error(ErrorMsg.OPERATE_FAIL.getMsg());
            }
// roll back
        try {
            if (redisUtil.getRedisTempLock(OrderOutType.RECEIVING_GOODS.getType(), serviceNo,
                System.currentTimeMillis())) {
                log.info("Op:confirmReceiving, Locked:{} successfully.", serviceNo);
            } else {
                log.error("Op:confirmReceiving, Locked:{} fail!", serviceNo);
                return BaseExResponse.error(ErrorMsg.OPERATE_FAIL.getMsg());
            }
        } catch (Exception e) {
            log.error("Op:confirmReceiving, params:{} has error:", JSON.toJSONString(record), e);
            if (e instanceof BaseException) {
                throw new RuntimeException("次品收货失败:" + e.getMessage());
            }
            throw new RuntimeException("次品收货失败:请联系管理员处理");
        } finally {
            log.info("Op:confirmReceiving, Lock:{} released successfully", serviceNo);
            redisUtil.deleteRedisTempLock(OrderOutType.RECEIVING_GOODS.getType(), serviceNo);
        }

 

标签:serviceNo,confirmReceiving,log,error,分布式,Op
From: https://www.cnblogs.com/qxqbk/p/18278584

相关文章

  • 关于锁的使用,千万不要踩这个坑!(附带Synchronized详解和ZooKeeper、Redis等分布式锁详解
    1、分布式锁在分布式系统中,我们经常会使用各种锁来保证数据的一致性和并发安全。一些常见的分布式锁实现包括:基于ZooKeeper的分布式锁:使用ZooKeeper节点的特性来实现分布式锁。基于Redis的分布式锁:利用Redis的原子性操作和过期时间特性来实现分布式锁。Redlock算法:由......
  • 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【13】压力压测JMeter-性能监控jv
    持续学习&持续更新中…守破离【雷丰阳-谷粒商城】【分布式高级篇-微服务架构篇】【13】压力压测JMeter-性能监控jvisualvm压力测试概述性能指标JMeter基本使用添加线程组添加HTTP请求添加监听器启动压测&查看分析结果JMeterAddressAlreadyinuse错误解决性......
  • 深入理解单一应用架构、垂直应用架构和分布式服务架构
    什么是单一应用架构?单一应用架构(MonolithicArchitecture)是一种传统的软件架构模式,其中所有的功能模块被构建成一个独立的可部署单元。简单来说,整个应用程序作为一个整体被打包和部署。单一应用架构的特点集中管理:所有的功能模块都在一个代码库中进行管理。统一部署:整个......
  • 【2024最新精简版】分布式事物面试篇
    文章目录在你的项目中哪些模块使用了分布式事务控制?能否举例说明?说一说SeatAT模式的工作原理?说一说SeatXA模式的工作原理?说一说SeatTCC模式的工作原理?什么是TCC模式的业务悬挂和空回滚?如何解决业务悬挂和空回滚?更多相关内容可查看在你的项目......
  • Memcached分布式特性解析:高效缓存策略的关键
    在现代的互联网应用中,缓存是提高性能和扩展性的关键技术之一。Memcached作为一个高性能的分布式内存缓存系统,广泛用于减轻数据库负载、加快数据访问速度。本文将深入探讨Memcached的分布式特性,包括其工作原理、集群管理、数据一致性、故障恢复以及与其他分布式系统的集成等......
  • Redis 分布式锁
    Redis分布式锁分布式锁的演变本地锁(单机用)利用redis进行分布式锁使用set防止死锁加过期时间使用setnx防止A请求未执行完锁过期删除B请求加锁后A完成后误删该锁使用Hash结构,规定每个请求只能删除自己的锁保证并发安全,申请锁和加过期时间需要原子性,用lua脚本......
  • 最全常见分布式ID生成方案
    近两年的技术面试,分布式系列问题是面试官经常会问到的一个高频方向。比如:分布式事务、分布式锁、分布式调度、分布式存储、分布式ID、分布式集群等。今天我们就来聊聊,这里面相对简单的分布式ID,首先来说下,我们为什么需要分布式ID?当系统数据量过大,数据查询已经达到瓶颈,进......
  • 并发业务使用redis分布式锁
    伴随着业务体量的上升,我们的qps与并发问题越来越明显,这时候就需要用到让代码一定情况下进行串行执行的工具:锁1.业务场景代码@Override@Transactional(rollbackFor=Exception.class)publicObjecttestBatch(Useruser){LambdaQueryWrapper<Us......
  • 基于AUTBUS总线的分布式储能监控系统
     ......
  • Java项目-基于SpringCloud+springboot+vue的分布式架构网上商城系统(源码+数据库+文档
    源码获取:https://download.csdn.net/download/u011832806/89440647基于SpringCloud+SpringBoot+Vue的分布式架构网上商城系统   开发语言:Java   数据库:MySQL   技术:SpringCloud+SpringBoot+MyBatis+Vue.js+eureka   工具:IDEA/Ecilpse、Navicat、Maven经......