赞
踩
原文:https://blog.csdn.net/m0_67402125/article/details/123792116
语法: eval script numkeys keys args
参数: eval — redis提供解析lua脚本的命令
script — lua脚本
numkeys — 指定键名参数集(keys)的个数
keys — 键名参数集,通过全局变量KEYS数组表示,起始下标为1
args — 键值参数集,通过全局变量ARGV数组表示,起始下标为1
描述: EVAL命令的语义要求字面量不要直接写在lua脚本中,推荐使用变量来定义lua脚本,并将字面量放在键名参数集keys和键值参数集args中,通过全局变量KEYS和ARGV来获取,这样做的好处是可缓存!在lua脚本中,可以使用两个函数来执行redis命令,分别是:redis.call()和redis.pcall()
例子:
eval “return redis.call(‘set’,KEYS[1],ARGA[1])” 1 name sym
eval “return redis.call(‘get’,KEYS[1])” 1 name
错误处理:
上面说过,在lua脚本中可以使用call()和pcall()来执行redis脚本,这两个函数的效果是一模一样的,唯一区别就是它们对于错误处理的不同:
①redis.call()在执行命令中发生错误,脚本会停止执行,返回一个脚本错误,错误的输出信息会说明错误造成的原因:
②redis.pcall()执行命令出错时将捕获错误并返回表示错误的Lua表类型
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。