分布式锁的实现方式有多种,例如: Mysql, Redis, Zookeeper,或者自研分布式锁比如谷歌的Chubby, 今天介绍如果用Redis实现分布式锁,笔者认为在java开发中,使用Reids 加锁方式比较方便容易上手,
前置条件: 安装Redis, 使用redisson 包或者maven依赖
封装一个 redissonUtil 主要方法有两个,一个是加锁的一个是解锁的
方法1: public boolean trylock(String lockName, long waitTime) {
try {
String key = RedisConstant.REDIS_LOCK_PRE + lockName;
RLock lock = this.redissonClient.getLock(key);
return lock.tryLock(waitTime, TimeUnit.MILLISECONDS);
} catch (Exception var6) {
log.error(StrUtil.format("tryLock fail!lockName={}", new Object[]{lockName}), var6);
return false;
}
}
方法2:
public void unlock(String lockName) {
String key = RedisConstant.REDIS_LOCK_PRE + lockName;
RLock lock = this.redissonClient.getLock(key);
if (lock != null && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
新建一个SpringBoot Web项目,新建一个 Controller

以上的例子可以放到service层,这里为了演示方便。
1064

被折叠的 条评论
为什么被折叠?



