Redis实现分布式锁(设计模式应用实战)
笔者看过网络上各种各样使用redis实现分布式锁的代码,要么错误,要么片段化,没有一个完整的例子,借这个周末给大家总结一下redis实现分布式锁的两种机制 自旋锁和排他锁 鉴于实现锁的方式不同,那么这里使用策略模式来组织代码 一、自旋锁 分布式锁抽象策略接口 package com.srr.lock; /** * @Description 分布式锁的接口 */ abstract public interface DistributedLock { /** * 获取锁 */ boolean lock(); /** * 解锁 */ void unlock(); } 自旋锁策略抽象类,使用模板方法模式构建 package com.srr.lock; /** * 自旋锁策略模板 */ public abstract class SpinRedisLockStrategy implements DistributedLock { private static final Integer retry = 50; // 默认重试5次 private static final Long sleeptime = 100L ; protected String lockKey; protected String requestId; protected int expireTime; private