当前位置: 首页 > article >正文

电商项目高级篇07-redisson分布式锁

redisson分布式锁

  • 1、引入maven依赖
  • 2、config类
  • 3、可重入锁设计

1、引入maven依赖

 <!--引入redisson-->
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.12.0</version>
        </dependency>

2、config类

MyRedissonConfig

package com.ljs.gulimall.product.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;

import java.io.IOException;

@Configuration
public class MyRedissonConfig {

    @Bean(destroyMethod = "shutdown")
    public RedissonClient redisson() throws IOException {
        // 默认连接地址 127.0.0.1:6379
        Config config = new Config();
//可以用"rediss://"来启用 SSL 连接
        config.useSingleServer().setAddress("redis://xxx:6379").setPassword("xxxxx");
        return Redisson.create(config);
    }
}

在这里插入图片描述

3、可重入锁设计

在这里插入图片描述

redisson不存在死锁问题

 @ResponseBody
    @GetMapping("/hello")
    public String hello(){
        // 1、获取一把锁
        RLock lock = redisson.getLock("my-lock");

        // 2、加锁
        lock.lock();
        // 3、执行业务代码
        try{
            System.out.println("加锁成功,执行业务代码。。。"+Thread.currentThread().getId());
            Thread.sleep(30000);
        }catch (Exception exception) {

        }finally {
            // 4、解锁
            System.out.println("释放锁。。。"+Thread.currentThread().getId());
            lock.unlock();
        }
        return "hello";
    }

无论程序是否异常。程序正常执行时看门狗机制会锁自动续期,程序异常时会30秒后释放锁。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/458318.html

相关文章:

  • 排序算法之快速排序、归并排序
  • java全栈day21--Web后端实战之利用Mybaits查询数据
  • pd虚拟机 [po] Parallels Desktop 20 激活 for Mac [jie] 安装教程【支持M芯片】
  • 鸿蒙TCPSocket通信模拟智能家居模拟案例
  • 勤工助学系统|Java|SSM|VUE| 前后端分离
  • springboot510基于Springboot+vue线上教育培训办公系统(论文+源码)_kaic
  • JSON的运用与总结
  • 【Python科研数据爬虫】基于国家标准查询平台和能源标准化信息平台的海上风电相关行业标准查询信息爬取及处理
  • STM32-笔记16-定时器中断点灯
  • overleaf中出现TeX capacity exceeded PDF object stream buffer=5000000的原因和解决方案
  • pandas df 如何 输出数据到 sqlite3
  • Android studio-SDK无法安装的问题
  • LeetCode:3083. 字符串及其反转中是否存在同一子字符串(哈希 Java)
  • VM虚拟机配置ubuntu网络
  • 机器人C++开源库The Robotics Library (RL)使用手册(三)
  • 小程序配置文件 —— 16 项目配置文件和配置 sass
  • 拉取docker run hello-world失败
  • 【每日学点鸿蒙知识】渐变效果、Web组件注册对象报错、深拷贝list、loadContent数据共享、半屏弹窗
  • 【连续学习之VCL算法】2017年论文:Variational continual learning
  • 【开源框架】从零到一:AutoGen Studio开源框架-UI层环境安装与智能体操作全攻略