Login
网站首页 > 文章中心 > 其它

基于Redis的Setnx实现分布式锁

作者:小编 更新时间:2023-08-07 11:00:00 浏览量:361人看过

基于Redis的Setnx实现分布式锁-图1

第一段:?redis分布式锁原理

并发 到Redis里变成了串行排队,单线程

基于Redis的Setnx实现分布式锁

基于Redis的Setnx实现分布式锁

基于Redis的Setnx实现分布式锁

基于Redis的Setnx实现分布式锁

基于Redis的Setnx实现分布式锁

第二段:基于Redis的Setnx实现分布式锁?

①.、pom

  <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-data-redisartifactId>
dependency>

package com.example.distributelock.controller;

import com.example.distributelock.lock.RedisLock;
import com.example.distributelock.lock.ZkLock;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class RedisLockController {
private RedisTemplate redisTemplate;

@RequestMapping("redisLock")
public String redisLock(){
    log.info("我进入了方法!");
    try (RedisLock redisLock = new RedisLock(redisTemplate,"redisKey",30)){
        if (redisLock.getLock()) {
            log.info("我进入了锁!!");
            Thread.sleep(15000);
    } catch (InterruptedException e) {
    } catch (Exception e) {
    log.info("方法执行完成");
    return "方法执行完成";
@RequestMapping("zkLock")
public String zkLock(){
    log.info("我进入了方法!");
    try (ZkLock zkLock = new ZkLock("localhost:2181","order")){
        if (zkLock.getLock()) {
            log.info("我进入了锁!!");
            Thread.sleep(15000);
    } catch (InterruptedException e) {
    } catch (Exception e) {
    log.info("方法执行完成");
    return "方法执行完成";
}
}

View Code

以上就是土嘎嘎小编为大家整理的基于Redis的Setnx实现分布式锁相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章