Lua是一门脚本语言,它是由C语言实现的。其设计目标是做为嵌入式程序移植到其他应用程序。Redis将Lua做为脚本语言可以帮助开发者定制自己的Redis命令。
Lua支持strings(字符串),numbers(数值),tables(表格),booleans(布尔)
(1)lua脚本式在redis中原子执行的,在执行过程中不会插入其他命令
(2)lua脚本可以帮助开发和运维人员创造出自己定制的命令,并可以将这些命令常驻在Redis内存中,实现复用的效果。
(3)lua脚本可以将多条命令一次性打包,有效的减少网络开销。
例如:script load $(test.lua)
返回:a25260dd66ce02462c5b5231 727b2f7772c0bcc5
例如:script exists a25260dd66ce02462c5b5231 727b2f7772c0bcc5
返回:1
如果一个脚本比较耗时,会阻塞了redis。直到脚本执行完毕或则外部干预将其结束。
Redis提供了一个lua-time-limit参数,默认是5秒,它是lua脚本的超时时间,这个超时时间仅仅是当lua脚本超过lua-time-limit后,向其他调用放发送busy信号,并不会停止服务端和客户端的脚本执行。客户端会收到“Busy Redis is busy running a script”错误,并提示使用script kill和shutdownnosave命令来杀掉这个busy的脚本