专栏名称: java那些事
分享java开发中常用的技术,分享软件开发中各种新技术的应用方法。每天推送java技术相关或者互联网相关文章。关注“java那些事”,让自己做一个潮流的java技术人!《java程序员由笨鸟到菜鸟》系列文章火热更新中。
目录
相关文章推荐
51好读  ›  专栏  ›  java那些事

Springboot-Redis分布式锁

java那些事  · 公众号  · Java  · 2019-02-22 16:00

正文

请到「今天看啥」查看全文



# DistributedLock.java 顶级接口
/**
* @author fuwei.deng
* @date 2017年6月14日 下午3:11:05
* @version 1.0.0
*/

public interface DistributedLock {

public static final long TIMEOUT_MILLIS = 30000 ;

public static final int RETRY_TIMES = Integer.MAX_VALUE;

public static final long SLEEP_MILLIS = 500 ;

public boolean lock ( String key ) ;

public boolean lock ( String key, int retryTimes ) ;

public boolean lock ( String key, int retryTimes, long sleepMillis ) ;

public boolean lock ( String key, long expire ) ;

public boolean lock ( String key, long expire, int retryTimes ) ;

public boolean lock ( String key, long expire, int retryTimes, long sleepMillis ) ;

public boolean releaseLock ( String key ) ;
}




# AbstractDistributedLock.java 抽象类,实现基本的方法,关键方法由子类去实现
/**
* @author fuwei.deng
* @date 2017年6月14日 下午3:10:57
* @version 1.0.0
*/

public abstract class AbstractDistributedLock implements DistributedLock {

@ Override
public boolean lock ( String key )
{
return lock (key, TIMEOUT_MILLIS, RETRY_TIMES, SLEEP_MILLIS);
}

@ Override
public boolean lock ( String key, int retryTimes )
{
return lock (key, TIMEOUT_MILLIS, retryTimes, SLEEP_MILLIS);
}

@ Override
public boolean lock ( String key, int retryTimes, long sleepMillis )
{
return lock (key, TIMEOUT_MILLIS, retryTimes, sleepMillis);
}

@ Override
public boolean lock ( String key, long expire )
{
return lock (key, expire, RETRY_TIMES, SLEEP_MILLIS);
}

@ Override
public boolean lock ( String key, long expire, int retryTimes )
{
return lock (key, expire, retryTimes, SLEEP_MILLIS);
}

}




# RedisDistributedLock.java Redis分布式锁的实现
import java.util.ArrayList;
import java.util. List ;
import java.util.UUID;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;

import






请到「今天看啥」查看全文