|
@@ -7,10 +7,7 @@ import org.redisson.api.*;
|
|
|
import org.redisson.api.options.KeysScanOptions;
|
|
import org.redisson.api.options.KeysScanOptions;
|
|
|
|
|
|
|
|
import java.time.Duration;
|
|
import java.time.Duration;
|
|
|
-import java.util.Collection;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.util.Map;
|
|
|
|
|
-import java.util.Set;
|
|
|
|
|
|
|
+import java.util.*;
|
|
|
import java.util.function.Consumer;
|
|
import java.util.function.Consumer;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
import java.util.stream.Stream;
|
|
@@ -584,4 +581,31 @@ public class RedisUtils {
|
|
|
RKeys rKeys = CLIENT.getKeys();
|
|
RKeys rKeys = CLIENT.getKeys();
|
|
|
return rKeys.countExists(key) > 0;
|
|
return rKeys.countExists(key) > 0;
|
|
|
}
|
|
}
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 从 List 头部弹出一个元素(LPOP)
|
|
|
|
|
+ */
|
|
|
|
|
+ public static <T> T popFromListHead(final String key){
|
|
|
|
|
+ RDeque<T> rDeque = CLIENT.getDeque(key);
|
|
|
|
|
+ return rDeque.poll(); //RDeque.poll() 在所有版本都存在
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 批量弹出
|
|
|
|
|
+ */
|
|
|
|
|
+ public static <T> List<T> popBatchFromListHead(final String key, int count) {
|
|
|
|
|
+ RDeque<T> rDeque = CLIENT.getDeque(key);
|
|
|
|
|
+ List<T> result = new ArrayList<>(count);
|
|
|
|
|
+ for (int i = 0; i < count; i++) {
|
|
|
|
|
+ T item = rDeque.poll();
|
|
|
|
|
+ if (item == null) break;
|
|
|
|
|
+ result.add(item);
|
|
|
|
|
+ }
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 写入队列(LPUSH)
|
|
|
|
|
+ */
|
|
|
|
|
+ public static <T> void pushToListHead(final String key, T value) {
|
|
|
|
|
+ RDeque<T> rDeque = CLIENT.getDeque(key);
|
|
|
|
|
+ rDeque.push(value); // = LPUSH
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|