rmdir.cn

EVAL

执行 Lua 脚本

语法

EVAL script numkeys key [key ...] arg [arg ...]

说明

EVAL 在 Redis 服务端执行 Lua 脚本,脚本内所有命令原子执行。用于实现复杂原子操作。

参数

  • script必填

    Lua 脚本内容

  • numkeys必填

    键参数的数量

  • key

    脚本中使用的键名

  • arg

    传递给脚本的附加参数

示例

简单脚本

执行原子 GETSET

EVAL "local v = redis.call('GET', KEYS[1]); redis.call('SET', KEYS[1], ARGV[1]); return v" 1 mykey newvalue

分布式限流

Lua 实现令牌桶

EVAL "redis.call('INCR', KEYS[1]); redis.call('EXPIRE', KEYS[1], ARGV[1])" 1 rate:key 60