redis执行lua脚本

本文详细介绍了如何在Redis中使用EVAL命令执行lua脚本,包括设置和获取键值的操作,以及lua脚本中redis.call()和redis.pcall()的区别及其错误处理机制。重点强调了通过变量存储字面量以提高缓存效率的方法。
  • 语法格式

语法: 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命令,设置一个key=name,value=sym的字符串

eval “return redis.call(‘set’,KEYS[1],ARGA[1])” 1 name sym

第二个eval命令:获取key=name的字符串的值

eval “return redis.call(‘get’,KEYS[1])” 1 name

在这里插入图片描述
错误处理

上面说过,在lua脚本中可以使用call()和pcall()来执行redis脚本,这两个函数的效果是一模一样的,唯一区别就是它们对于错误处理的不同:

①redis.call()在执行命令中发生错误,脚本会停止执行,返回一个脚本错误,错误的输出信息会说明错误造成的原因:

在这里插入图片描述
②redis.pcall()执行命令出错时将捕获错误并返回表示错误的Lua表类型
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值