脚本逻辑:
- 取出队列所有元素
- 遍历元素查找值是否存在
- 不存在则推入
final String scriptText = """
local valuesInTarget = redis.call('lrange', KEYS[1], 0, -1);
local index = 0;
for i, v in ipairs(valuesInTarget) do
if v == value then
index = i
break
end
end
if index == 0 then
redis.call('rpush', KEYS[1], value);
end
""";
script.eval(
RScript.Mode.READ_WRITE,
scriptText,
RScript.ReturnType.VALUE,
List.of(REDIS_KEY_TARGET) // 对应脚本中KEYS数组的元素
);