apoc.redis.eval
Procedure APOC Full
apoc.redis.eval(uri, script, outputType, keys, values, {config}) | Execute the 'EVAL script' command. In the parameters provided to the procedure, keys are bound to the KEYS[n] like special array of the Lua script and values are bound to the ARGV[n] like special array of the Lua script.
Signature
apoc.redis.eval(uri :: STRING?, script :: STRING?, outputType :: STRING?, keys :: LIST? OF ANY?, values :: LIST? OF ANY?, config = {} :: MAP?) :: (value :: ANY?)
Input parameters
Name | Type | Default |
---|---|---|
uri |
STRING? |
null |
script |
STRING? |
null |
outputType |
STRING? |
null |
keys |
LIST? OF ANY? |
null |
values |
LIST? OF ANY? |
null |
config |
MAP? |
{} |
Usage Examples
We can do through the apoc.redis.eval
procedure,
any Lua script executable with the EVAL command
In this procedure, the third parameter in the procedure, in this case VALUE
is the ScriptOutputType,
that is, the return type of Lua script that can be a BOOLEAN
, INTEGER
, STATUS
, VALUE
or MULTI
.
The fourth and fifth params, are bound respectively to the KEYS[n]
and to the ARGV[n]
like special array of the Lua script.
So, if we have a record with key testEval
and value valueEval
,
we can execute the following query:
CALL apoc.redis.eval($uri, 'return redis.call("set", KEYS[1], ARGV[1])', 'VALUE', ['testEval'], ['key:name'], {})
that is equivalent to a redis-cli
command eval "return redis.call('set', KEYS[1], ARGV[1])" 1 testEval key:name
and returns
value |
---|
"OK" |
Or also, we can execute (without ARGV[n]
):
CALL apoc.redis.eval($uri, 'return redis.call("get", KEYS[1])', 'VALUE', ['testEval'], [], {})
value |
---|
key:name |
that is equivalent to a redis-cli
command eval "return redis.call('get', KEYS[1])" 1 testEval
.