前面学习了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命令
上面调用了一个赋值命令,需要注意拼写,KEYS和ARGV表示键和值
而且 前面还有一个 1 。告诉redis才脚本的键的个数为1 。
另外,每次执行脚本都要将脚本内容传给redis,非常麻烦。
所以,redis有EVALSHA 命令,每次需要再次调用脚本的时候只需要将脚本的SHA1值传给redis即可,但是首次发送前需要获取到SHA1值,
redis接收到命令之后会根据SHA1找到脚本,如果没有对应的脚本就会报错,提示你使用EVAL命令。