diff --git a/.gitignore b/.gitignore index b387283..326e7b6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ .settings/ *.bak .idea/ +*.iml diff --git a/README.md b/README.md index 737aa24..512254b 100644 --- a/README.md +++ b/README.md @@ -91,11 +91,11 @@ public class RedisLockConfig { @Autowired - private JedisConnectionFactory jedisConnectionFactory; + private RedisConnectionFactory redisConnectionFactory; @Bean public RedisLock build() { - RedisLock redisLock = new RedisLock.Builder(jedisConnectionFactory,RedisToolsConstant.SINGLE) + RedisLock redisLock = new RedisLock.Builder(redisConnectionFactory,RedisToolsConstant.SINGLE) .lockPrefix("lock_") .sleepTime(100) .build(); @@ -181,11 +181,11 @@ public class RedisLimitConfig { private int limit; @Autowired - private JedisConnectionFactory jedisConnectionFactory; + private RedisConnectionFactory redisConnectionFactory; @Bean public RedisLimit build() { - RedisLimit redisLimit = new RedisLimit.Builder(jedisConnectionFactory, RedisToolsConstant.SINGLE) + RedisLimit redisLimit = new RedisLimit.Builder(redisConnectionFactory, RedisToolsConstant.SINGLE) .limit(limit) .build(); return redisLimit; diff --git a/pom.xml b/pom.xml index d4d82b3..f9fb101 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ 1.0.13 1.7.7 - 4.2.1.RELEASE + 5.2.1.RELEASE diff --git a/src/main/java/com/crossoverjie/distributed/limit/RedisLimit.java b/src/main/java/com/crossoverjie/distributed/limit/RedisLimit.java index 4ef22fe..6e18a7a 100644 --- a/src/main/java/com/crossoverjie/distributed/limit/RedisLimit.java +++ b/src/main/java/com/crossoverjie/distributed/limit/RedisLimit.java @@ -1,16 +1,14 @@ package com.crossoverjie.distributed.limit; import com.crossoverjie.distributed.constant.RedisToolsConstant; -import com.crossoverjie.distributed.intercept.SpringMVCIntercept; import com.crossoverjie.distributed.util.ScriptUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.redis.connection.RedisClusterConnection; import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.data.redis.connection.RedisConnectionFactory; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisCluster; -import redis.clients.jedis.JedisPool; import java.io.IOException; import java.util.Collections; @@ -19,7 +17,7 @@ * Function: limit util * * @author crossoverJie - * Date: 22/04/2018 15:54 + * Date: 22/04/2018 15:54 * @since JDK 1.8 */ public class RedisLimit { @@ -27,8 +25,8 @@ public class RedisLimit { private static Logger logger = LoggerFactory.getLogger(RedisLimit.class); - private JedisConnectionFactory jedisConnectionFactory; - private int type ; + private RedisConnectionFactory redisConnectionFactory; + private int type; private int limit = 200; private static final int FAIL_CODE = 0; @@ -39,15 +37,16 @@ public class RedisLimit { private String script; private RedisLimit(Builder builder) { - this.limit = builder.limit ; - this.jedisConnectionFactory = builder.jedisConnectionFactory; - this.type = builder.type ; + this.limit = builder.limit; + this.redisConnectionFactory = builder.redisConnectionFactory; + this.type = builder.type; buildScript(); } /** * limit traffic + * * @return if true */ public boolean limit() { @@ -67,15 +66,15 @@ public boolean limit() { private Object limitRequest(Object connection) { Object result = null; String key = String.valueOf(System.currentTimeMillis() / 1000); - if (connection instanceof Jedis){ - result = ((Jedis)connection).eval(script, Collections.singletonList(key), Collections.singletonList(String.valueOf(limit))); + if (connection instanceof Jedis) { + result = ((Jedis) connection).eval(script, Collections.singletonList(key), Collections.singletonList(String.valueOf(limit))); ((Jedis) connection).close(); - }else { + } else { result = ((JedisCluster) connection).eval(script, Collections.singletonList(key), Collections.singletonList(String.valueOf(limit))); try { ((JedisCluster) connection).close(); } catch (IOException e) { - logger.error("IOException",e); + logger.error("IOException", e); } } return result; @@ -83,16 +82,17 @@ private Object limitRequest(Object connection) { /** * get Redis connection + * * @return */ private Object getConnection() { - Object connection ; - if (type == RedisToolsConstant.SINGLE){ - RedisConnection redisConnection = jedisConnectionFactory.getConnection(); + Object connection; + if (type == RedisToolsConstant.SINGLE) { + RedisConnection redisConnection = redisConnectionFactory.getConnection(); connection = redisConnection.getNativeConnection(); - }else { - RedisClusterConnection clusterConnection = jedisConnectionFactory.getClusterConnection(); - connection = clusterConnection.getNativeConnection() ; + } else { + RedisClusterConnection clusterConnection = redisConnectionFactory.getClusterConnection(); + connection = clusterConnection.getNativeConnection(); } return connection; } @@ -107,27 +107,27 @@ private void buildScript() { /** - * the builder + * the builder */ - public static class Builder{ - private JedisConnectionFactory jedisConnectionFactory = null ; + public static class Builder { + private RedisConnectionFactory redisConnectionFactory = null; private int limit = 200; - private int type ; + private int type; - public Builder(JedisConnectionFactory jedisConnectionFactory,int type){ - this.jedisConnectionFactory = jedisConnectionFactory; - this.type = type ; + public Builder(RedisConnectionFactory redisConnectionFactory, int type) { + this.redisConnectionFactory = redisConnectionFactory; + this.type = type; } - public Builder limit(int limit){ - this.limit = limit ; + public Builder limit(int limit) { + this.limit = limit; return this; } - public RedisLimit build(){ - return new RedisLimit(this) ; + public RedisLimit build() { + return new RedisLimit(this); } } diff --git a/src/main/java/com/crossoverjie/distributed/lock/RedisLock.java b/src/main/java/com/crossoverjie/distributed/lock/RedisLock.java index 991ed19..c675d16 100644 --- a/src/main/java/com/crossoverjie/distributed/lock/RedisLock.java +++ b/src/main/java/com/crossoverjie/distributed/lock/RedisLock.java @@ -6,7 +6,7 @@ import org.slf4j.LoggerFactory; import org.springframework.data.redis.connection.RedisClusterConnection; import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.data.redis.connection.RedisConnectionFactory; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisCluster; @@ -16,7 +16,7 @@ * Function: distributed lock * * @author crossoverJie - * Date: 26/03/2018 11:09 + * Date: 26/03/2018 11:09 * @since JDK 1.8 */ public class RedisLock { @@ -34,8 +34,8 @@ public class RedisLock { private int sleepTime; - private JedisConnectionFactory jedisConnectionFactory; - private int type ; + private RedisConnectionFactory redisConnectionFactory; + private int type; /** * time millisecond @@ -48,8 +48,8 @@ public class RedisLock { private String script; private RedisLock(Builder builder) { - this.jedisConnectionFactory = builder.jedisConnectionFactory; - this.type = builder.type ; + this.redisConnectionFactory = builder.redisConnectionFactory; + this.type = builder.type; this.lockPrefix = builder.lockPrefix; this.sleepTime = builder.sleepTime; @@ -59,16 +59,17 @@ private RedisLock(Builder builder) { /** * get Redis connection + * * @return */ private Object getConnection() { - Object connection ; - if (type == RedisToolsConstant.SINGLE){ - RedisConnection redisConnection = jedisConnectionFactory.getConnection(); + Object connection; + if (type == RedisToolsConstant.SINGLE) { + RedisConnection redisConnection = redisConnectionFactory.getConnection(); connection = redisConnection.getNativeConnection(); - }else { - RedisClusterConnection clusterConnection = jedisConnectionFactory.getClusterConnection(); - connection = clusterConnection.getNativeConnection() ; + } else { + RedisClusterConnection clusterConnection = redisConnectionFactory.getClusterConnection(); + connection = clusterConnection.getNativeConnection(); } return connection; } @@ -82,7 +83,7 @@ private Object getConnection() { * false lock fail */ public boolean tryLock(String key, String request) { - return tryLock(key,request,10*TIME); + return tryLock(key, request, 10 * TIME); } /** @@ -94,15 +95,15 @@ public boolean tryLock(String key, String request) { public void lock(String key, String request) throws InterruptedException { //get connection Object connection = getConnection(); - String result ; - for (; ;) { - if (connection instanceof Jedis){ - result = ((Jedis)connection).set(lockPrefix + key, request, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, 10 * TIME); - if (LOCK_MSG.equals(result)){ + String result; + for (; ; ) { + if (connection instanceof Jedis) { + result = ((Jedis) connection).set(lockPrefix + key, request, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, 10 * TIME); + if (LOCK_MSG.equals(result)) { ((Jedis) connection).close(); } - }else { - result = ((JedisCluster)connection).set(lockPrefix + key, request, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, 10 * TIME); + } else { + result = ((JedisCluster) connection).set(lockPrefix + key, request, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, 10 * TIME); } if (LOCK_MSG.equals(result)) { @@ -127,15 +128,15 @@ public boolean lock(String key, String request, int blockTime) throws Interrupte //get connection Object connection = getConnection(); - String result ; + String result; while (blockTime >= 0) { - if (connection instanceof Jedis){ - result = ((Jedis) connection).set(lockPrefix + key, request, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, 10 * TIME) ; - if (LOCK_MSG.equals(result)){ + if (connection instanceof Jedis) { + result = ((Jedis) connection).set(lockPrefix + key, request, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, 10 * TIME); + if (LOCK_MSG.equals(result)) { ((Jedis) connection).close(); } - }else { - result = ((JedisCluster) connection).set(lockPrefix + key, request, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, 10 * TIME) ; + } else { + result = ((JedisCluster) connection).set(lockPrefix + key, request, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, 10 * TIME); } if (LOCK_MSG.equals(result)) { return true; @@ -160,12 +161,12 @@ public boolean lock(String key, String request, int blockTime) throws Interrupte public boolean tryLock(String key, String request, int expireTime) { //get connection Object connection = getConnection(); - String result ; + String result; - if (connection instanceof Jedis){ + if (connection instanceof Jedis) { result = ((Jedis) connection).set(lockPrefix + key, request, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, expireTime); ((Jedis) connection).close(); - }else { + } else { result = ((JedisCluster) connection).set(lockPrefix + key, request, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, expireTime); } @@ -225,15 +226,15 @@ public static class Builder { */ private static final int DEFAULT_SLEEP_TIME = 100; - private JedisConnectionFactory jedisConnectionFactory = null ; + private RedisConnectionFactory redisConnectionFactory = null; - private int type ; + private int type; private String lockPrefix = DEFAULT_LOCK_PREFIX; private int sleepTime = DEFAULT_SLEEP_TIME; - public Builder(JedisConnectionFactory jedisConnectionFactory, int type) { - this.jedisConnectionFactory = jedisConnectionFactory; + public Builder(RedisConnectionFactory redisConnectionFactory, int type) { + this.redisConnectionFactory = redisConnectionFactory; this.type = type; } diff --git a/src/test/java/com/crossoverjie/distributed/limit/RedisLimitJedisClusterJunitTest.java b/src/test/java/com/crossoverjie/distributed/limit/RedisLimitJedisClusterJunitTest.java index 908b760..98d1561 100644 --- a/src/test/java/com/crossoverjie/distributed/limit/RedisLimitJedisClusterJunitTest.java +++ b/src/test/java/com/crossoverjie/distributed/limit/RedisLimitJedisClusterJunitTest.java @@ -8,18 +8,15 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.springframework.data.redis.connection.RedisClusterConnection; -import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisClusterConnection; -import org.springframework.data.redis.connection.jedis.JedisConnection; -import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; -import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisCluster; /** * Function: * * @author crossoverJie - * Date: 27/04/2018 17:19 + * Date: 27/04/2018 17:19 * @since JDK 1.8 */ public class RedisLimitJedisClusterJunitTest { @@ -31,13 +28,13 @@ public class RedisLimitJedisClusterJunitTest { @Mock - private JedisConnectionFactory jedisConnectionFactory ; + private RedisConnectionFactory redisConnectionFactory; @Before public void setBefore() { MockitoAnnotations.initMocks(this); - redisLimit = new RedisLimit.Builder(jedisConnectionFactory, RedisToolsConstant.CLUSTER) + redisLimit = new RedisLimit.Builder(redisConnectionFactory, RedisToolsConstant.CLUSTER) .limit(100) .build(); @@ -46,10 +43,10 @@ public void setBefore() { @Test public void limit() { RedisClusterConnection clusterConnection = new JedisClusterConnection(jedisCluster); - Mockito.when(jedisConnectionFactory.getClusterConnection()).thenReturn(clusterConnection); + Mockito.when(redisConnectionFactory.getClusterConnection()).thenReturn(clusterConnection); - jedisCluster = (JedisCluster)clusterConnection.getNativeConnection(); - Mockito.when(jedisCluster.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(0L) ; + jedisCluster = (JedisCluster) clusterConnection.getNativeConnection(); + Mockito.when(jedisCluster.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(0L); boolean limit = redisLimit.limit(); System.out.println("limit=" + limit); @@ -62,10 +59,10 @@ public void limit() { public void limitTrue() { RedisClusterConnection clusterConnection = new JedisClusterConnection(jedisCluster); - Mockito.when(jedisConnectionFactory.getClusterConnection()).thenReturn(clusterConnection); + Mockito.when(redisConnectionFactory.getClusterConnection()).thenReturn(clusterConnection); - jedisCluster = (JedisCluster)clusterConnection.getNativeConnection(); - Mockito.when(jedisCluster.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(1L) ; + jedisCluster = (JedisCluster) clusterConnection.getNativeConnection(); + Mockito.when(jedisCluster.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(1L); boolean limit = redisLimit.limit(); System.out.println("limit=" + limit); diff --git a/src/test/java/com/crossoverjie/distributed/limit/RedisLimitJedisJunitTest.java b/src/test/java/com/crossoverjie/distributed/limit/RedisLimitJedisJunitTest.java index 435fd19..9b7271f 100644 --- a/src/test/java/com/crossoverjie/distributed/limit/RedisLimitJedisJunitTest.java +++ b/src/test/java/com/crossoverjie/distributed/limit/RedisLimitJedisJunitTest.java @@ -1,7 +1,6 @@ package com.crossoverjie.distributed.limit; import com.crossoverjie.distributed.constant.RedisToolsConstant; -import com.crossoverjie.distributed.lock.RedisLock; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -9,18 +8,16 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisConnection; -import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; -import redis.clients.jedis.HostAndPort; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisCluster; -import redis.clients.jedis.JedisPoolConfig; /** * Function: * * @author crossoverJie - * Date: 27/04/2018 17:19 + * Date: 27/04/2018 17:19 * @since JDK 1.8 */ public class RedisLimitJedisJunitTest { @@ -31,16 +28,16 @@ public class RedisLimitJedisJunitTest { private JedisCluster jedisCluster; @Mock - private Jedis jedis ; + private Jedis jedis; @Mock - private JedisConnectionFactory jedisConnectionFactory ; + private RedisConnectionFactory redisConnectionFactory; @Before public void setBefore() { MockitoAnnotations.initMocks(this); - redisLimit = new RedisLimit.Builder(jedisConnectionFactory, RedisToolsConstant.SINGLE) + redisLimit = new RedisLimit.Builder(redisConnectionFactory, RedisToolsConstant.SINGLE) .limit(100) .build(); @@ -48,11 +45,11 @@ public void setBefore() { @Test public void limit() { - RedisConnection redisConnection = new JedisConnection(jedis) ; - Mockito.when(jedisConnectionFactory.getConnection()).thenReturn(redisConnection); + RedisConnection redisConnection = new JedisConnection(jedis); + Mockito.when(redisConnectionFactory.getConnection()).thenReturn(redisConnection); - jedis = (Jedis)redisConnection.getNativeConnection(); - Mockito.when(jedis.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(0L) ; + jedis = (Jedis) redisConnection.getNativeConnection(); + Mockito.when(jedis.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(0L); boolean limit = redisLimit.limit(); System.out.println("limit=" + limit); @@ -64,11 +61,11 @@ public void limit() { @Test public void limitTrue() { - RedisConnection redisConnection = new JedisConnection(jedis) ; - Mockito.when(jedisConnectionFactory.getConnection()).thenReturn(redisConnection); + RedisConnection redisConnection = new JedisConnection(jedis); + Mockito.when(redisConnectionFactory.getConnection()).thenReturn(redisConnection); - jedis = (Jedis)redisConnection.getNativeConnection(); - Mockito.when(jedis.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(1L) ; + jedis = (Jedis) redisConnection.getNativeConnection(); + Mockito.when(jedis.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(1L); boolean limit = redisLimit.limit(); System.out.println("limit=" + limit); diff --git a/src/test/java/com/crossoverjie/distributed/limit/RedisLimitTest.java b/src/test/java/com/crossoverjie/distributed/limit/RedisLimitTest.java index fbbcbc2..eada8b5 100644 --- a/src/test/java/com/crossoverjie/distributed/limit/RedisLimitTest.java +++ b/src/test/java/com/crossoverjie/distributed/limit/RedisLimitTest.java @@ -8,10 +8,11 @@ import org.springframework.data.redis.connection.RedisClusterConfiguration; import org.springframework.data.redis.connection.RedisNode; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; -import redis.clients.jedis.*; +import redis.clients.jedis.HostAndPort; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; +import redis.clients.jedis.JedisPoolConfig; -import java.util.HashSet; -import java.util.Set; import java.util.concurrent.*; public class RedisLimitTest { @@ -57,16 +58,16 @@ private void init() { config.setTestOnBorrow(true); config.setTestOnReturn(true); - RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration() ; - redisClusterConfiguration.addClusterNode(new RedisNode("10.19.13.51",7000)); + RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(); + redisClusterConfiguration.addClusterNode(new RedisNode("10.19.13.51", 7000)); - JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(config) ; + JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(config); jedisConnectionFactory.setHostName("47.98.194.60"); jedisConnectionFactory.setPort(6379); jedisConnectionFactory.setPassword(""); jedisConnectionFactory.setTimeout(100000); jedisConnectionFactory.afterPropertiesSet(); - //jedisConnectionFactory.setShardInfo(new JedisShardInfo("47.98.194.60", 6379)); + //redisConnectionFactory.setShardInfo(new JedisShardInfo("47.98.194.60", 6379)); HostAndPort hostAndPort = new HostAndPort("47.98.194.60", 6379); Jedis jedis = new Jedis("47.98.194.60", 6379); diff --git a/src/test/java/com/crossoverjie/distributed/lock/RealRedisClusterLockTest.java b/src/test/java/com/crossoverjie/distributed/lock/RealRedisClusterLockTest.java index b55a965..f3e076d 100644 --- a/src/test/java/com/crossoverjie/distributed/lock/RealRedisClusterLockTest.java +++ b/src/test/java/com/crossoverjie/distributed/lock/RealRedisClusterLockTest.java @@ -65,16 +65,16 @@ private void init() { redisClusterConfiguration.addClusterNode(new RedisNode("10.19.13.51", 7000)); //集群 - JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisClusterConfiguration) ; + JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(redisClusterConfiguration); - jedisConnectionFactory.setTimeout(100000); - jedisConnectionFactory.afterPropertiesSet(); - //jedisConnectionFactory.setShardInfo(new JedisShardInfo("47.98.194.60", 6379)); + redisConnectionFactory.setTimeout(100000); + redisConnectionFactory.afterPropertiesSet(); + //redisConnectionFactory.setShardInfo(new JedisShardInfo("47.98.194.60", 6379)); //JedisCluster jedisCluster = new JedisCluster(hostAndPort); HostAndPort hostAndPort = new HostAndPort("10.19.13.51", 7000); JedisCluster jedisCluster = new JedisCluster(hostAndPort); - redisLock = new RedisLock.Builder(jedisConnectionFactory, RedisToolsConstant.CLUSTER) + redisLock = new RedisLock.Builder(redisConnectionFactory, RedisToolsConstant.CLUSTER) .lockPrefix("lock_") .sleepTime(100) .build(); @@ -105,7 +105,7 @@ public void run() { if (limit) { logger.info("加锁成功========="); boolean unlock = redisLock.unlock("abc", "12345"); - logger.info("解锁结果===[{}]",unlock); + logger.info("解锁结果===[{}]", unlock); } else { logger.info("加锁失败"); @@ -133,7 +133,6 @@ public void run() { //redisLock.unlock("abc","12345") ; - //测试阻塞锁 + 阻塞时间 //try { // boolean limit = redisLock.lock("abc", "12345", 100); diff --git a/src/test/java/com/crossoverjie/distributed/lock/RealRedisLockTest.java b/src/test/java/com/crossoverjie/distributed/lock/RealRedisLockTest.java index c9dc3f7..ea4a31b 100644 --- a/src/test/java/com/crossoverjie/distributed/lock/RealRedisLockTest.java +++ b/src/test/java/com/crossoverjie/distributed/lock/RealRedisLockTest.java @@ -6,6 +6,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.redis.connection.RedisClusterConfiguration; +import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisNode; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import redis.clients.jedis.HostAndPort; @@ -62,21 +63,21 @@ private void init() { redisClusterConfiguration.addClusterNode(new RedisNode("10.19.13.51", 7000)); //单机 - JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(config); + JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(config); //集群 - //JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisClusterConfiguration) ; - jedisConnectionFactory.setHostName("47.98.194.60"); - jedisConnectionFactory.setPort(6379); - jedisConnectionFactory.setPassword(""); - jedisConnectionFactory.setTimeout(100000); - jedisConnectionFactory.afterPropertiesSet(); - //jedisConnectionFactory.setShardInfo(new JedisShardInfo("47.98.194.60", 6379)); + //RedisConnectionFactory redisConnectionFactory = new RedisConnectionFactory(redisClusterConfiguration) ; + redisConnectionFactory.setHostName("47.98.194.60"); + redisConnectionFactory.setPort(6379); + redisConnectionFactory.setPassword(""); + redisConnectionFactory.setTimeout(100000); + redisConnectionFactory.afterPropertiesSet(); + //redisConnectionFactory.setShardInfo(new JedisShardInfo("47.98.194.60", 6379)); //JedisCluster jedisCluster = new JedisCluster(hostAndPort); HostAndPort hostAndPort = new HostAndPort("10.19.13.51", 7000); JedisCluster jedisCluster = new JedisCluster(hostAndPort); - redisLock = new RedisLock.Builder(jedisConnectionFactory, RedisToolsConstant.SINGLE) + redisLock = new RedisLock.Builder(redisConnectionFactory, RedisToolsConstant.SINGLE) .lockPrefix("lock_") .sleepTime(100) .build(); @@ -125,18 +126,16 @@ public void run() { //} - //测试阻塞锁 try { redisLock.lock("abc", "12345"); logger.info("加锁成功========="); - redisLock.unlock("abc","12345") ; + redisLock.unlock("abc", "12345"); } catch (InterruptedException e) { e.printStackTrace(); } - //测试阻塞锁 + 阻塞时间 //try { // boolean limit = redisLock.lock("abc", "12345", 100); diff --git a/src/test/java/com/crossoverjie/distributed/lock/RealSingleRedisLockTest.java b/src/test/java/com/crossoverjie/distributed/lock/RealSingleRedisLockTest.java index 8fdba21..da10f0a 100644 --- a/src/test/java/com/crossoverjie/distributed/lock/RealSingleRedisLockTest.java +++ b/src/test/java/com/crossoverjie/distributed/lock/RealSingleRedisLockTest.java @@ -5,16 +5,13 @@ import org.junit.Before; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.JedisShardInfo; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.*; /** * real test by single Redis @@ -63,13 +60,13 @@ private void init() { config.setTestOnReturn(true); //单机 - JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(config) ; + JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(config); - jedisConnectionFactory.setTimeout(100000); - jedisConnectionFactory.afterPropertiesSet(); - jedisConnectionFactory.setShardInfo(new JedisShardInfo("127.0.0.1", 6379)); + redisConnectionFactory.setTimeout(100000); + redisConnectionFactory.afterPropertiesSet(); + redisConnectionFactory.setShardInfo(new JedisShardInfo("127.0.0.1", 6379)); - redisLock = new RedisLock.Builder(jedisConnectionFactory, RedisToolsConstant.SINGLE) + redisLock = new RedisLock.Builder(redisConnectionFactory, RedisToolsConstant.SINGLE) .lockPrefix("lock_") .sleepTime(100) .build(); @@ -100,7 +97,7 @@ public void run() { if (limit) { logger.info("加锁成功========="); boolean unlock = redisLock.unlock("abc", "12345"); - logger.info("解锁结果===[{}]",unlock); + logger.info("解锁结果===[{}]", unlock); } else { logger.info("加锁失败"); @@ -128,7 +125,6 @@ public void run() { //redisLock.unlock("abc","12345") ; - //测试阻塞锁 + 阻塞时间 //try { // boolean limit = redisLock.lock("abc", "12345", 100); diff --git a/src/test/java/com/crossoverjie/distributed/lock/RedisClusterLockTest.java b/src/test/java/com/crossoverjie/distributed/lock/RedisClusterLockTest.java index c97679e..bbc3da7 100644 --- a/src/test/java/com/crossoverjie/distributed/lock/RedisClusterLockTest.java +++ b/src/test/java/com/crossoverjie/distributed/lock/RedisClusterLockTest.java @@ -4,16 +4,14 @@ import junit.framework.Assert; import org.junit.Before; import org.junit.Test; -import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.springframework.data.redis.connection.RedisClusterConnection; +import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisClusterConnection; -import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import redis.clients.jedis.JedisCluster; - import java.util.UUID; public class RedisClusterLockTest { @@ -22,7 +20,7 @@ public class RedisClusterLockTest { private RedisLock redisLock; @Mock - private JedisConnectionFactory jedisConnectionFactory ; + private RedisConnectionFactory redisConnectionFactory; @Mock private JedisCluster jedisCluster; @@ -31,15 +29,15 @@ public class RedisClusterLockTest { public void setBefore() { MockitoAnnotations.initMocks(this); - redisLock = new RedisLock.Builder(jedisConnectionFactory, RedisToolsConstant.CLUSTER) + redisLock = new RedisLock.Builder(redisConnectionFactory, RedisToolsConstant.CLUSTER) .lockPrefix("lock_") .sleepTime(100) .build(); RedisClusterConnection clusterConnection = new JedisClusterConnection(jedisCluster); - Mockito.when(jedisConnectionFactory.getClusterConnection()).thenReturn(clusterConnection); - jedisCluster = (JedisCluster)clusterConnection.getNativeConnection(); + Mockito.when(redisConnectionFactory.getClusterConnection()).thenReturn(clusterConnection); + jedisCluster = (JedisCluster) clusterConnection.getNativeConnection(); } @@ -151,7 +149,7 @@ public void lock2False() throws Exception { Assert.assertFalse(lock); //check was called 2 times - Mockito.verify(jedisCluster,Mockito.times(2)).set(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), + Mockito.verify(jedisCluster, Mockito.times(2)).set(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyLong()); } @@ -159,7 +157,7 @@ public void lock2False() throws Exception { @Test public void unlock() throws Exception { - Mockito.when(jedisCluster.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(1L) ; + Mockito.when(jedisCluster.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(1L); boolean locktest = redisLock.unlock("test", "ec8ebca0-14ba0-4b23-99a8-b35fbba3629e"); @@ -171,7 +169,7 @@ public void unlock() throws Exception { @Test public void unlockFalse() throws Exception { - Mockito.when(jedisCluster.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(0L) ; + Mockito.when(jedisCluster.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(0L); boolean locktest = redisLock.unlock("test", "ec8ebca0-14ba0-4b23-99a8-b35fbba3629e"); diff --git a/src/test/java/com/crossoverjie/distributed/lock/RedisSingleTest.java b/src/test/java/com/crossoverjie/distributed/lock/RedisSingleTest.java index 62fc65d..0a32c82 100644 --- a/src/test/java/com/crossoverjie/distributed/lock/RedisSingleTest.java +++ b/src/test/java/com/crossoverjie/distributed/lock/RedisSingleTest.java @@ -4,17 +4,13 @@ import junit.framework.Assert; import org.junit.Before; import org.junit.Test; -import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import org.springframework.data.redis.connection.RedisClusterConnection; import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.jedis.JedisClusterConnection; +import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisConnection; -import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisCluster; import java.util.UUID; @@ -22,7 +18,7 @@ * Function: * * @author crossoverJie - * Date: 28/03/2018 23:35 + * Date: 28/03/2018 23:35 * @since JDK 1.8 */ public class RedisSingleTest { @@ -30,7 +26,7 @@ public class RedisSingleTest { private RedisLock redisLock; @Mock - private JedisConnectionFactory jedisConnectionFactory ; + private RedisConnectionFactory redisConnectionFactory; @Mock private Jedis jedis; @@ -38,17 +34,16 @@ public class RedisSingleTest { @Before public void setBefore() { MockitoAnnotations.initMocks(this); - redisLock = new RedisLock.Builder(jedisConnectionFactory, RedisToolsConstant.SINGLE) + redisLock = new RedisLock.Builder(redisConnectionFactory, RedisToolsConstant.SINGLE) .lockPrefix("lock_") .sleepTime(100) .build(); + RedisConnection redisConnection = new JedisConnection(jedis); + Mockito.when(redisConnectionFactory.getConnection()).thenReturn(redisConnection); - RedisConnection redisConnection = new JedisConnection(jedis) ; - Mockito.when(jedisConnectionFactory.getConnection()).thenReturn(redisConnection); - - jedis = (Jedis)redisConnection.getNativeConnection(); + jedis = (Jedis) redisConnection.getNativeConnection(); } @@ -56,7 +51,7 @@ public void setBefore() { @Test public void unlock() throws Exception { - Mockito.when(jedis.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(1L) ; + Mockito.when(jedis.eval(Mockito.anyString(), Mockito.anyList(), Mockito.anyList())).thenReturn(1L); boolean locktest = redisLock.unlock("test", "ec8ebca0-14ba0-4b23-99a8-b35fbba3629e"); @@ -86,7 +81,6 @@ public void tryLock() throws Exception { } - @Test public void lock() throws Exception { @@ -103,8 +97,6 @@ public void lock() throws Exception { } - - @Test public void lock2() throws Exception { @@ -137,13 +129,12 @@ public void lock2False() throws Exception { Assert.assertFalse(lock); //check was called 2 times - Mockito.verify(jedis,Mockito.times(2)).set(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), + Mockito.verify(jedis, Mockito.times(2)).set(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyInt()); } - @Test public void tryLock2() throws Exception {