Redis进阶 使用Lua编写Redis脚本

发布时间 2023-12-27 23:47:15作者: RookieCoderAdu

前面学习了Lua的基本语法,接下来是使用Lua编写脚本

1.可以使用redis.call来调用redis命令

使用redis.call会将redis命令返回的类型 转换成对应的Lua数据类型。

关系如下

 

与redis.call想类似的就是redis.pcall。

【redis.call与redis.pcall的区别】

当命令出错的时候,redis.pcall会记录错误并继续执行

而redis.call会返回错误,不继续执行

 

2.返回值给客户端

Lua脚本可以使用return 返回值给客户端。对应的Redis也会将Lua的类型转换成redis的类型,与上图相反。

注意:Lua的false会被redis转化成空

 

3.编译Lua脚本

编写脚本之后需要读取脚本,可以使用EVAL命令

 上面调用了一个赋值命令,需要注意拼写,KEYSARGV表示键和值

而且 前面还有一个 1 。告诉redis才脚本的键的个数为1

 

另外,每次执行脚本都要将脚本内容传给redis,非常麻烦。

所以,redis有EVALSHA 命令,每次需要再次调用脚本的时候只需要将脚本的SHA1值传给redis即可,但是首次发送前需要获取到SHA1值

redis接收到命令之后会根据SHA1找到脚本,如果没有对应的脚本就会报错,提示你使用EVAL命令。