Lua脚本,是一种轻量级的脚本语言。
设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua脚本的应用也很多,比如Nginx+Lua实现的
OpenResty,Redis+Lua配合使用(Redisson中大量使用了Lua脚本),使用Lua脚本开发的各种插件(我们公司灰度环境的规则匹配)等等。而我们这次在设计用户领取限制时,使用了Redis+Lua来实现。
Lua脚本具有以下好处:
1、减少网络开销:Lua脚本在执行的时候,是先发送到Redis服务器的,然后在服务器上执行脚本。多个命令和业务逻辑都封装到脚本里,一次性提交到服务器。
2、
原子性操作
:我们都知道redis在执行命令时是单线程的,但是每个命令之间就存在并发的情况,就存在先查询再操作时,两个命令没办法保证线程安全。但使用Lua脚本时,redis把这个脚本操作当成是一个命令,那么这个脚本中的多条操作也就保证了原子性。(
注意:只保证原子性,不是事务
)
Lua脚本的简单使用: