# distributeLockTest **Repository Path**: weixin.com/distributeLockTest ## Basic Information - **Project Name**: distributeLockTest - **Description**: 分布式锁的实现 ,目前实现是基于zk, redis - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-08-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # distributeLockTest #### 项目介绍 分布式锁的实现 ,目前实现是基于zk, redis # ZK实现 原理: 因为ZK中所有的follower的写操作都得有leader来执行 ,所以这就保证了 操作的数序性 。 首先获取节点,查看是否是最小的,不是最小的, 就排队 ,是最小的就获取 锁。 只要使用的是zk节点创建时候的EPHEMERAL_SEQUENTIAL,创建一个顺序性 临时节点 ,来做为锁 # redis实现 原理:获取锁的时候,使用setnx加锁,并使用expire命令为锁添加一个超时时间,超过该时间则自动释放锁,锁的value值为一个随机生成的UUID,通过此在释放锁的时候进行判断。 获取锁的时候还设置一个获取的超时时间,若超过这个时间则放弃获取锁。 释放锁的时候,通过UUID判断是不是该锁,若是该锁,则执行delete进行锁释放