一、 减小网络开销;屡次请求在脚本中,一次便可完成redis
二、 原子操做数组
三、 复用网络
四、 可实现热切换数据结构
$ redis-cli --eval /qpth/test.lua rate.limiting:127.0.0.1 , 10 3函数
详解:测试
/qpth/test.lua 脚本路径lua
rate.limiting:127.0.0.1 要操做的键,在脚本中可用key[1]获取spa
10 3 “,”后为参数,可用ARGV[1]和ARGV[2]获取orm
nil 空值,全部为负值的变量和字段都为nil索引
boolean 包括true、false
number 整点和浮点
string 二进制,单双引号是相同的,可包含转义字符
table Lua脚本中惟一的数据结构,可当数组、可当字典
function 函数,可储存在变量中,可为函数的参数或返回值
全局变量:无须声明,直接使用,默认值为nil
注:redis脚本中不可以使用全局变量,以防脚本之间相互影响
声明:
local c --声明一个局部变量,默认值为nil
注释:
单行注释 -- 注释
--[[
这是一个多行注释
]]
赋值
Lua支持多重赋值
local a, b = 1, 2 --a的值为1,b的值为2
local a, b = 1, 2, 3 -- a=1 b=2 3舍弃
local a, b c = 1, 2 -- a=1,b=2 c=nil
一、 数学操做符。 + - * / %(取模) -(取负) ^幂操做符
数学操做符的操做数会自动转换为数字
print(‘1’+1) --2
二、 比较操做符
== 比较值和类型是否相同
~= 与==的结果正好相反
<, >, <=, >= 小于、大于、小于等于、大于等于
tonumber(‘1’) 转换为数字
tostring(1) 转换为字符串
三、 逻辑操做符
not 取反
and a and b中,若是a是false,则返回a,不然返回b
or a or b中,若是a是true,则返回a,不然返回b
四、 链接操做符
‘hello’ .. ‘world’ ..用于链接字符串,会自动把数字转换字符串
五、 取长度操做符(可取字符串和表的长度)
prinf(#’hello’) -- 5
注:Lua脚本中只有nil和false才是假,其他值包括空字符串和0都被认为是真值
while 条件表达式 do
语句块
end
repeat
语句块
until 条件表达式
for 变量=初值,终值,步长 do
语句块
end
for 变量1,变量2,…,变量N in 迭代器 do
语句块
end
定义方式:
a = {}
a[‘field’] = ‘value’
prinf(a.field) --‘value’
people = { --也能够这样定义
name = ‘Bob’,
age = 29
}
a = {}
a[1] = ‘Bob’
a[2] = ‘Jeff’
也能够以下:
a = {‘Bob’,’Jeff’}
注:Lua数组的索引是从1开始的,而不是0
function(num)
函数体
end
能够将其赋值给一个局部变量
local square = function (num)
return num*num
end
redis.call(‘set’,’foo’,’bar’)