Redis实战篇02

news/2024/7/1 5:53:49

1.分布式锁Redisson

简单介绍:

使用setnx可能会出现的极端问题:

Redisson的简介:

简单的使用:

   业务代码的改造:

private void handleVoucherOrder(VoucherOrder voucherOrder) {
        Long userId = voucherOrder.getUserId();
        //创建锁对象(兜底)
        RLock lock = redissonClient.getLock("lock:order:" + userId);
        //获取锁
        boolean isLock = lock.tryLock();
        //判断是否获取锁成功
        if (!isLock) {
            //获取失败,返回错误或者重试
            throw new RuntimeException("发送未知错误");
        }
        try {
            voucherOrderService.createVoucherOrder(voucherOrder);
        } finally {
            //释放锁
            lock.unlock();
        }

    }

可重入锁的原理:

获取锁的Lua脚本:

 释放锁的Lua脚本:

 


http://lihuaxi.xjx100.cn/news/2215659.html

相关文章

【日常刷题】为什么二分法不建议使用 (right + left) / 2?

为什么二分法不建议使用 (right left) / 2? 用left(right-left)/2,而不用(leftright)/2是担心后者(rightleft)的值过大超过了整形的取值范围造成溢出,使结果不准确 就拿奇偶个数来看就知道什么原因了。 valueOf() 当有一个参数时AAA.valueOf(BBB)的…

算法与数据结构:列表、栈、队列、树、图的深入解析

在软件开发和计算机科学领域,算法和数据结构是两大基石。它们不仅影响着程序的性能,还决定了解决问题的效率。以下,我们将从技术难点、面试官关注点、回答吸引力以及代码举例四个方面,详细解释常见的算法和数据结构:列…

深度学习Day-20:DenseNet算法实战 乳腺癌识别

🍨 本文为:[🔗365天深度学习训练营] 中的学习记录博客 🍖 原作者:[K同学啊 | 接辅导、项目定制] 一、 基础配置 语言环境:Python3.8编译器选择:Pycharm深度学习环境: torch1.12.1c…

cmake target_include_directories 详解

在 CMake 中,target_include_directories 命令用于向特定目标(如可执行文件或库)添加包含目录,以便编译器能够找到特定目标所需的头文件。 基本语法 target_include_directories(target_name[SYSTEM] [BEFORE]directory1[direct…

给类设置serialVersionUID

第一步打开idea设置窗口(setting窗口默认快捷键CtrlAltS) 第二步搜索找到Inspections 第三步勾选主窗口中Java->Serializations issues->下的Serializable class without serialVersionUID’项 ,并点击“OK”确认 第四步鼠标选中要加…

JavaScript 逻辑赋值运算符(=,||=,??=)与可选链运算符(?. ??)

一、 短路运算 短路运算是一种常见的逻辑运算方式,其核心机制是在运算过程中进行一些优化和简化,从而提高计算效率和减少资源消耗。特别是在处理逻辑与(&&)和逻辑或(||)运算时,如果左侧…

搭建k8s集群报错unknown command “\u00a0“ for “kubeadm init“

搭建k8s报错unknown command “\u00a0” for “kubeadm init” 网上搜了一下,是因为复制过来的命令前面包含了空格,将复制的命令放到idea可以清楚看到几个命令前面有空格,删除掉就好了,记录一下

【电路笔记】-共基极放大器

共基极放大器 文章目录 共基极放大器1、概述2、等效电路3、电流增益4、输入阻抗5、输出阻抗6、电压增益7、示例:电压、电流和功率增益8、总结1、概述 在本文中,我们将介绍双极晶体管放大器的最后一种拓扑,称为共基极放大器 (CBA)。 下面的图 1 显示了 CBA 的电气图,此处没…