博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lua脚本学习笔记
阅读量:6148 次
发布时间:2019-06-21

本文共 1517 字,大约阅读时间需要 5 分钟。

hot3.png

Lua脚本优点

1、  减少网络开销;多次请求在脚本中,一次即可完成

2、  原子操作

3、  复用

4、  可实现热切换

Lua测试

$ redis-cli --eval /qpth/test.lua rate.limiting:127.0.0.1 , 10 3

详解:

/qpth/test.lua                   脚本路径

rate.limiting:127.0.0.1    要操作的键,在脚本中可用key[1]获取

10 3                                     “,”后为参数,可用ARGV[1]ARGV[2]获取

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

操作符(五类)

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

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

print(‘1’+1)        --2

2、  比较操作符

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

~=                         ==的结果正好相反

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

tonumber(‘1’)  转换为数字

tostring(1)                   转换为字符串

3、  逻辑操作符

not              取反

and             a and b中,如果afalse,则返回a,否则返回b

or                a or b中,如果atrue,则返回a,否则返回b

4、  连接操作符

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

5、  取长度操作符(可取字符串和表的长度)

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’)

 

转载于:https://my.oschina.net/u/2335552/blog/632171

你可能感兴趣的文章
Nginx配置URL转向tomcat
查看>>
极客Web前端开发资源大荟萃#001
查看>>
让div固定在某个位置
查看>>
Java开发环境Docker镜像
查看>>
从无到有,WebService Apache Axis2初步实践
查看>>
任务调度(一)——jdk自带的Timer
查看>>
UIKit框架(15)PCH头文件
查看>>
整理看到的好的文档
查看>>
Linux磁盘管理和文件系统管理
查看>>
linux运维人员的成功面试总结案例分享
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
RAC表决磁盘管理和维护
查看>>
Apache通过mod_php5支持PHP
查看>>
发布一个TCP 吞吐性能测试小工具
查看>>
java学习:jdbc连接示例
查看>>
PHP执行批量mysql语句
查看>>
Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
查看>>
Silverlight 如何手动打包xap
查看>>