package com.rdj.distributelock.controller;
import lombok.extern.slf4j.Slf4j;
import org.redisson.Redisson;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.TimeUnit;
@RestController
@Slf4j
public class RedissonLockController {
@RequestMapping("/resissonLock")
public String resissonLock(){
log.info("进入了方法");
Config config = new Config();
config.useSingleServer().setAddress("redis://192.168.120.80:6379");
RedissonClient redissonClient = Redisson.create(config);
RLock rLock = redissonClient.getLock("order");
try {
rLock.lock(30, TimeUnit.SECONDS);
log.info("获得了锁");
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
log.info("释放了锁");
rLock.unlock();
}
log.info("方法完成");
return "finished";
}
}
<!-- https://mvnrepository.com/artifact/org.redisson/redisson -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.11.6</version>
</dependency>