在我们日常使用Redis实现分布式锁中,依赖如下
<dependency> <groupId>org.redissongroupId> <artifactId>redissonartifactId> <version>3.10.1version>dependency>
在使用Redisson作为客户端,它需要与服务端进行通信,那么它的底层通信使用的是Netty.
在启动Redisson客户端时,底层Netty就已经与服务端建立好了通信(通道Channel).
简单写了一个示例代码
import org.redisson.Redisson;import org.redisson.api.RLock;import org.redisson.api.RedissonClient;import org.redisson.config.Config;import java.util.concurrent.TimeUnit;public class RedisClient {
public static void main(String[] args) {
Config config = new Config(); config.useSingleServer().setAddress("redis://127.0.0.1:6379"); // 单机模式 RedissonClient redissonClient = Redisson.create(config); RLock redLock = redissonClient.getLock("computerLock");// 获取锁实例 try {
boolean isLock = redLock.tryLock(500, 1000, TimeUnit.MILLISECONDS); if (isLock) {
System.out.println("获取到锁,执行业务逻辑"); } } catch (Exception x) {
} finally {
redLock.unlock(); System.out.println("释放锁"); } }}
以下代码摘录在源码,部分无关紧要的代码做了删减
以上代码中,一开始在执行
RedissonClient redissonClient = Redisson.create(config);
时候,就会创建Netty客户端,并与服务端建立好通信.建立好通信通道之后,我们的业务代码向服务端发送的命令就是通过建立好的通信通道发送给服务端的.
public static RedissonClient create(Config config) {
// #2 创建Redisson Redi