Lua脚本操作redis


lua脚本操作redis


redis命令

EVAL script numkeys key [key …] arg [arg …]

script 对应lua脚本
numkeys 指定键名参数个数
key 为键名参数
arg 为附加参数

lua脚本

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结构

执行lua脚本

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)	不会执行,前面已报错

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值