赞
踩
EVAL script numkeys key [key …] arg [arg …]
script 对应lua脚本
numkeys 指定键名参数个数
key 为键名参数
arg 为附加参数
lua通过全局变量KEYS和ARGV获取键名参数和附加参数,如下:
local k1 = KEYS[1]
local feild = ARGV[1]
local val = ARGV[2]
redis.call('hset', k1, feild, val)
json格式的参数可以通过cjson.decode()进行解码转化成lua的table结构
1. 执行lua脚本
EVAL “local k1 = KEYS[1] local feild = ARGV[1] local val = ARGV[2] return redis.call(‘hset’, k1, feild, val)” 1 k foo bar
2. 执行lua脚本文件
./redis-cli -a password --eval [path-lua-script] k , foo bar
键名参数和附件参数用“,”隔开,“,”两边各留一个空格
定义lua脚本test.lua
local k1 = KEYS[1]
local feild = ARGV[1]
local val = ARGV[2]
return redis.call('hset', k1, feild, val)
执行lua脚本文件
./redis-cli -a 123 --eval /path/test.lua k , foo bar
注:lua脚本执行中出现错误,已成功执行的命令不会回滚
local k1 = KEYS[1]
local k2 = KEYS[2]
local feild = ARGV[1]
local val = ARGV[2]
redis.call('hset', k1, feild, val) 正确执行
redis.call('get', k1) 执行出错,键值为hash结构
redis.call('hset', k2, feild, val) 不会执行,前面已报错
return redis.call('hget', k2, feild) 不会执行,前面已报错
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。