|
|
@@ -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;
|
|
|
+ }
|
|
|
|
|
|
// ---------
|
|
|
|