- , , : EVAL.
EVAL script, Lua Redis, , script .
script:
local v = redis.call('INCR', ARGV [1]), v == 1, redis.call('EXPIRE', ARGV [1], ARGV [2]) end return v
: INCR v, , v 1 ( ), , EXPIRE , v. ARGV [...] - , script, ARGV [1] - , ARGV [2] - - .
script:
> eval "local v = redis.call('INCR', ARGV [1]), v == 1, redis.call('EXPIRE', ARGV [1], ARGV [2]) end return v" 0 my_key 10
( ) 1
> eval "local v = redis.call('INCR', ARGV [1]), v == 1, redis.call('EXPIRE', ARGV [1], ARGV [2]) end return v" 0 my_key 10
( ) 2
> get my_key
"2"
[ 10 ]
> get my_key
()