apoc.redis.eval
过程 Apoc 扩展
apoc.redis.eval(uri, script, outputType, keys, values, {config}) | 执行 'EVAL script' 命令。在提供给该过程的参数中,键绑定到 Lua 脚本的 KEYS[n] 特殊数组,值绑定到 Lua 脚本的 ARGV[n] 特殊数组。
签名
apoc.redis.eval(uri :: STRING?, script :: STRING?, outputType :: STRING?, keys :: LIST? OF ANY?, values :: LIST? OF ANY?, config = {} :: MAP?) :: (value :: ANY?)
输入参数
| 名称 | 类型 | 默认 |
|---|---|---|
uri |
STRING? |
null |
script |
STRING? |
null |
outputType |
STRING? |
null |
keys |
LIST? OF ANY? |
null |
值 (values) |
LIST? OF ANY? |
null |
config |
MAP? |
{} |
使用示例
我们可以通过 apoc.redis.eval 过程执行任何可以使用 EVAL 命令 执行的 Lua 脚本。
在该过程中,第三个参数(此处为 VALUE)是 ScriptOutputType,即 Lua 脚本的返回类型,可以是 BOOLEAN、INTEGER、STATUS、VALUE 或 MULTI。
第四个和第五个参数分别对应 Lua 脚本中的特殊数组 KEYS[n] 和 ARGV[n]。
因此,如果我们有一个键为 testEval、值为 valueEval 的记录,我们可以执行以下查询
CALL apoc.redis.eval($uri, 'return redis.call("set", KEYS[1], ARGV[1])', 'VALUE', ['testEval'], ['key:name'], {})
这等同于 redis-cli 命令 eval "return redis.call('set', KEYS[1], ARGV[1])" 1 testEval key:name,并返回
| 值 |
|---|
"OK" |
或者,我们也可以执行(不带 ARGV[n])
CALL apoc.redis.eval($uri, 'return redis.call("get", KEYS[1])', 'VALUE', ['testEval'], [], {})
| 值 |
|---|
key:name |
这等同于 redis-cli 命令 eval "return redis.call('get', KEYS[1])" 1 testEval。