当前位置:   article > 正文

Lua脚本操作redis_lua 写hset

lua 写hset

lua脚本操作redis


redis命令

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

script 对应lua脚本
numkeys 指定键名参数个数
key 为键名参数
arg 为附加参数
  • 1
  • 2
  • 3
  • 4

lua脚本

lua通过全局变量KEYS和ARGV获取键名参数和附加参数,如下:

local k1 = KEYS[1] 
local feild = ARGV[1] 
local val = ARGV[2] 
redis.call('hset', k1, feild, val)
  • 1
  • 2
  • 3
  • 4

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

键名参数和附件参数用“,”隔开,“,”两边各留一个空格
  • 1

定义lua脚本test.lua

local k1 = KEYS[1]  
local feild = ARGV[1] 
local val = ARGV[2]  
return redis.call('hset', k1, feild, val)
  • 1
  • 2
  • 3
  • 4

执行lua脚本文件

./redis-cli -a 123 --eval /path/test.lua k , foo bar
  • 1

注: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)	不会执行,前面已报错
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/351618
推荐阅读
相关标签
  

闽ICP备14008679号