Lua脚本学习笔记

Lua脚本优势

一、  减小网络开销;屡次请求在脚本中,一次便可完成redis

二、  原子操做数组

三、  复用网络

四、  可实现热切换数据结构

Lua测试

$ 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

Lua语法

数据类型

nil             空值,全部为负值的变量和字段都为nil索引

boolean    包括truefalse

number    整点和浮点

string        二进制,单双引号是相同的,可包含转义字符

table         Lua脚本中惟一的数据结构,可当数组、可当字典

function   函数,可储存在变量中,可为函数的参数或返回值

变量

全局变量:无须声明,直接使用,默认值为nil

注:redis脚本中不可以使用全局变量,以防脚本之间相互影响

局部变量

声明

local c                --声明一个局部变量,默认值为nil

注释

单行注释         -- 注释

--[[

这是一个多行注释

         ]]

赋值

Lua支持多重赋值

local a, b = 1, 2        --a的值为1b的值为2

local a, b = 1, 2, 3     -- a=1  b=2  3舍弃

local a, b c = 1, 2     -- a=1b=2 c=nil

操做符(五类)

一、  数学操做符。 +  -  *  /  %(取模) -(取负) ^幂操做符

数学操做符的操做数会自动转换为数字

print(‘1’+1)        --2

二、  比较操做符

==                         比较值和类型是否相同

~=                         ==的结果正好相反

<, >, <=, >=        小于、大于、小于等于、大于等于

tonumber(‘1’)  转换为数字

tostring(1)                   转换为字符串

三、  逻辑操做符

not              取反

and             a and b中,若是afalse,则返回a,不然返回b

or                a or b中,若是atrue,则返回a,不然返回b

四、  链接操做符

‘hello’ .. ‘world’         ..用于链接字符串,会自动把数字转换字符串

五、  取长度操做符(可取字符串和表的长度)

prinf(#’hello’)             -- 5

 

注:Lua脚本中只有nilfalse才是假,其他值包括空字符串和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命令

redis.call(‘set’,’foo’,’bar’)

相关文章
相关标签/搜索