利用redis实现分布式锁,网上搜索的大部分是使用java jedis实现的。
redis官方推荐的分布式锁实现为redisson http://ifeve.com/redis-lock/
以下为spring boot实现分布式锁的步骤
项目pom中需要添加官方依赖 我是1.8JDK固为
org.redisson redisson 3.4.2
定义一个分布式锁的回调类
package com.example.demo.redis2; /** * 分布式锁回调接口 * * @author lk */ public interface DistributedLockCallback{ /** * 调用者必须在此方法中实现需要加分布式锁的业务逻辑 * * @return */ public T process(); /** * 得到分布式锁名称 * * @return */ public String getLockName(); }
分布式锁操作模板
package com.example.demo.redis2;
import java.util.concurrent.TimeUnit;
/**
* 分布式锁操作模板
*
* @author lk
*/
public interface DistributedLockTemplate {
/**
* 使用分布式锁,使用锁默认超时时间。
*
* @param callback
* @return
*/
public T lock(DistributedLockCallback callback);
/**
* 使用分布式锁。自定义锁的超时时间
*
* @param callback
* @param leaseTime 锁超时时间。超时后自动释放锁。
* @param timeUnit
* @return
*/
public T lock(DistributedLockCallback callback, long leaseTime, TimeUnit timeUnit);
} 使用redisson最简单的Single instance mode实现分布式锁模板接口