|
@@ -4,8 +4,11 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.geo.*;
|
|
|
import org.springframework.data.redis.connection.RedisGeoCommands;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
+import org.springframework.data.redis.core.script.DefaultRedisScript;
|
|
|
+import org.springframework.data.redis.core.script.RedisScript;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Set;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
@@ -32,6 +35,19 @@ public class BaseRedisService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 取出并删除列表中的所有元素(原子操作)
|
|
|
+ */
|
|
|
+ public List<String> popBatchFromList(String key) {
|
|
|
+ String luaScript =
|
|
|
+ "local elements = redis.call('LRANGE', KEYS[1], 0, -1) " +
|
|
|
+ "redis.call('DEL', KEYS[1]) " +
|
|
|
+ "return elements ";
|
|
|
+
|
|
|
+ RedisScript<List> script = RedisScript.of(luaScript, List.class);
|
|
|
+ return stringRedisTemplate.execute(script, Collections.singletonList(key));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 添加List, 所有
|
|
|
*
|
|
|
* @param key 键
|