Browse Source

Merge pull request !31 from jun/master

jun 8 years ago
parent
commit
3e00589327
1 changed files with 17 additions and 42 deletions
  1. 17 42
      src/main/java/com/jfinal/plugin/redis/Cache.java

+ 17 - 42
src/main/java/com/jfinal/plugin/redis/Cache.java

@@ -16,18 +16,13 @@
 
 package com.jfinal.plugin.redis;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
 import com.jfinal.plugin.redis.serializer.ISerializer;
 import redis.clients.jedis.Jedis;
 import redis.clients.jedis.JedisPool;
 
+import java.util.*;
+import java.util.Map.Entry;
+
 /**
  * Cache.
  * Cache api 添加了中文注释,便于工程师更方便使用,另外还原样保持了
@@ -785,22 +780,7 @@ public class Cache {
 		}
 		finally {close(jedis);}
 	}
-	
-	/**
-	 * BLPOP 是列表的阻塞式(blocking)弹出原语。
-	 * 它是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止。
-	 * 当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。
-	 */
-	@SuppressWarnings("rawtypes")
-	public List blpop(Object... keys) {
-		Jedis jedis = getJedis();
-		try {
-			List<byte[]> data = jedis.blpop(keysToBytesArray(keys));
-			return valueListFromBytesList(data);
-		}
-		finally {close(jedis);}
-	}
-	
+
 	/**
 	 * BLPOP 是列表的阻塞式(blocking)弹出原语。
 	 * 它是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止。
@@ -811,23 +791,7 @@ public class Cache {
 		Jedis jedis = getJedis();
 		try {
 			List<byte[]> data = jedis.blpop(timeout, keysToBytesArray(keys));
-			return valueListFromBytesList(data);
-		}
-		finally {close(jedis);}
-	}
-	
-	/**
-	 * BRPOP 是列表的阻塞式(blocking)弹出原语。
-	 * 它是 RPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BRPOP 命令阻塞,直到等待超时或发现可弹出元素为止。
-	 * 当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素。
-	 * 关于阻塞操作的更多信息,请查看 BLPOP 命令, BRPOP 除了弹出元素的位置和 BLPOP 不同之外,其他表现一致。
-	 */
-	@SuppressWarnings("rawtypes")
-	public List brpop(Object... keys) {
-		Jedis jedis = getJedis();
-		try {
-			List<byte[]> data = jedis.brpop(keysToBytesArray(keys));
-			return valueListFromBytesList(data);
+			return keyValueListFromBytesList(data);
 		}
 		finally {close(jedis);}
 	}
@@ -843,7 +807,7 @@ public class Cache {
 		Jedis jedis = getJedis();
 		try {
 			List<byte[]> data = jedis.brpop(timeout, keysToBytesArray(keys));
-			return valueListFromBytesList(data);
+			return keyValueListFromBytesList(data);
 		}
 		finally {close(jedis);}
 	}
@@ -1178,6 +1142,10 @@ public class Cache {
 		String keyStr = keyNamingPolicy.getKeyName(key);
 		return serializer.keyToBytes(keyStr);
 	}
+
+	protected Object keyFromBytes(byte[] bytes) {
+		return serializer.keyFromBytes(bytes);
+	}
 	
 	protected byte[][] keysToBytesArray(Object... keys) {
 		byte[][] result = new byte[keys.length][];
@@ -1235,6 +1203,13 @@ public class Cache {
 			result.add(valueFromBytes(d));
 		return result;
 	}
+
+	protected List keyValueListFromBytesList(List<byte[]> data) {
+		List<Object> result = new ArrayList<Object>();
+		result.add(keyFromBytes(data.get(0)));
+		result.add(valueFromBytes(data.get(1)));
+		return result;
+	}
 	
 	// ---------