基本环境
# redis ➜ ~ redis-server -v Redis server v=3.2.6 # lua ➜ ~ lua -v Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio
参考文档:
Redis从2.6版本开始引入了对Lua脚本的支持,通过在服务器中嵌入Lua环境,Redis客户端可以使用Lua脚本,直接在服务器端执行多个Redis命令。
# KEYS 与 ARGV 中间使用 “ , ” 逗号分隔,前后有空格 $ redis-cli --eval path/to/redis.lua KEYS[1] KEYS[2] , ARGV[1] ARGV[2] ... * --eval,告诉redis-cli读取并运行后面的lua脚本 * path/to/redis.lua,是lua脚本的位置,也可以直接为脚本字符串。是一个Lua 5.1 script。 * KEYS[1] KEYS[2],是要操作的键,可以指定多个,在lua脚本中通过KEYS[1], KEYS[2]获取 * ARGV[1] ARGV[2],参数,在lua脚本中通过ARGV[1], ARGV[2]获取。
127.0.0.1:6379> eval script numkeys key [key ...] arg [arg ...] * eval: 将要执行脚本 * script: 脚本字符串 * numkeys: KEY参数个数 * key ... : 操作的键 * arg ... : 参数
# xx.lua return {KEYS, ARGV}
➜ ~ redis-cli --eval xx.lua k1 k2 k3 , a1 a2 a3 1) 1) "k1" 2) "k2" 3) "k3" 2) 1) "a1" 2) "a2" 3) "a3"
➜ ~ redis-cli 127.0.0.1:6379> eval "redis.call('set', 'name', 'xx')" 0 (nil) 127.0.0.1:6379> eval "redis.call('get', 'name')" 0 (nil) 127.0.0.1:6379> eval "return redis.call('get', 'name')" 0 "xx"
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句