分布式锁(3):Redis基于set命令的分布式锁

1 实现思路

  1. 获取锁的时候,使用 setnx 加锁,并使用 expire 命令为锁添加一个超时时间,超过该时间则自动释放锁,锁的 value 值需要指定,可以根据具有业务含义,本文简化为 UUID,在释放锁的时候进行判断,避免误释放。
  2. 获取锁的时候还设置一个获取的超时时间,若超过这个时间则放弃获取锁。
  3. 释放锁的时候,通过 UUID 判断是不是该锁,若是该锁,则执行 delete 进行锁释放。

2 代码实现

引入依赖

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

编写锁工具类

package com.example.demo.utils;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.UUID;

public class RedisLockUtil {
    private JedisPool jedisPool;
    public RedisLockUtil(JedisPool jedisPool) {
        this.jedi

相关推荐

  1. 分布式3):Redis基于set命令分布式

    2024-06-19 06:24:01       35 阅读
  2. 基于redis分布式

    2024-06-19 06:24:01       25 阅读
  3. 基于redis分布式实现方案

    2024-06-19 06:24:01       64 阅读
  4. redis分布式-----基于RedLock算法实现分布式

    2024-06-19 06:24:01       43 阅读
  5. redis分布式-----基于redisson实现分布式

    2024-06-19 06:24:01       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-19 06:24:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-19 06:24:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-19 06:24:01       82 阅读
  4. Python语言-面向对象

    2024-06-19 06:24:01       91 阅读

热门阅读

  1. 【C++】特殊类设计

    2024-06-19 06:24:01       28 阅读
  2. shiny实现点击跳转下一个标签栏

    2024-06-19 06:24:01       43 阅读
  3. 第7章:系统架构设计基础知识-软件架构风格

    2024-06-19 06:24:01       26 阅读
  4. Python 介绍——浔川python社

    2024-06-19 06:24:01       33 阅读
  5. Qt 实战(5)布局管理器 | 5.1、DPI对布局的影响

    2024-06-19 06:24:01       31 阅读
  6. Web前端

    2024-06-19 06:24:01       43 阅读
  7. [每日一练]利用子查询查询出现一次的最大数字

    2024-06-19 06:24:01       43 阅读
  8. for循环

    for循环

    2024-06-19 06:24:01      38 阅读
  9. 【深度学习】TensorRT模型转换环境

    2024-06-19 06:24:01       38 阅读
  10. 大模型日报2024-06-18

    2024-06-19 06:24:01       47 阅读
  11. 深入理解 Python 类中的各种方法

    2024-06-19 06:24:01       32 阅读