前言
哈哈,有些人肯定理解为是门锁? 大门锁? 这里聊的都不是哈。

锁本质
为了防止分布式系统中的多个进程或者线程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。

分布式锁常用方案
Redis:setnx命令,原子性操作
Zookeeper:顺序临时节点

Redis实现分布式锁、下面框架已经实现锁的功能
https://github.com/redisson/redisson

Maven

<dependency>
   <groupId>org.redisson</groupId>
   <artifactId>redisson</artifactId>
   <version>3.15.2</version>
</dependency>  

application.yml

server:
  port: 8080
spring:
  redis:
    redisson:
     file: classpath:redisson.yml

redisson.yml

singleServerConfig:
 address:"redis://127.0.0.16379"
 connectTimeout:1000

LockController.java

@RestController
@SLf4j
public class LockController {
     @Aoutowired
     private RedissonClient redissonClient;

      @GetMapping("/lock")
      public void lock(){
        RLock lock = redissonClient.getLock("lock");
         try{
           //模拟
           boolean b = lock.tryLock():
           if(b){
              log.info("开始下单...");
              Thread.sleep(3000);
              lock.unlock();
           }else{
              log.info("很遗憾.");
           }
          //lock.lock(5,TimeUnit.SECONDS);
           
         } catch (InterruptedException e) {
          e.printStackTrace();
      }finally {
      lock.unlock(); 
      log.info("解锁了");
     }  
  }
}

标签: none

添加新评论