前言:
相信很多小伙伴对缓存锁都不陌生,但是简单的缓存锁想要用好还是需要一些功力。本文总结了笔者多年使用缓存所的一些心得,欢迎交流探讨~
幂等模型:
幂等场景一般由查重+写入
两步操作组成,两步操作组成一个最小完整逻辑,再通过缓存锁保证原子性
实现:
实现redis分布式锁需要注意两个关键点:保证原子性、设置过期时间
保证原子性的目的:是为了保证同一时间只有一个请求能获取到锁
设置过期时间的目的:是为了防止解锁失败导致死锁
public class MethodLock {
private static final Logger logger = LoggerFactory.getLogger(MethodLock.class);
public static final String KEY_SEPARATOR = ":";
public static final String PARAM_SEPARATOR = "_";
public static final String KEY_PARAM_SEPARATOR = "#";
public static final String SET_SUCCESS_RESULT = "OK";
public static final String METHOD_LOCK = "doraemon:method:lock";
private