文档章节

Lua脚本学习笔记

 独特55
发布于 2016/03/07 16:01
字数 704
阅读 83
收藏 6

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

 


© 著作权归作者所有

上一篇: mysql学习笔记一
下一篇: redis学习笔记一
粉丝 1
博文 10
码字总数 9543
作品 0
松江
私信 提问
程序猿成长计划--growing-up

程序猿成长计划 程序员成长计划包含了作为一名程序猿成长过程中的所学,我把这些以教程的形式开源出来,供大家一起学习、补充,共同成长。 三十分钟学会AWK Docker学习笔记-基础命令 一小时学...

mylxsw
2016/11/30
973
0
NodeMCU学习笔记之初始化工作

NodeMCU学习笔记之初始化工作 丛林听雨2016-11-04132 阅读 工作初始化 NodeMCU是一个开源的可以运行脚本的微控制器,直接支持WiFi链接和GPIO,而且成本低廉。是物联网开发的不二之选。板子是...

丛林听雨
2016/11/04
0
0
Nebula3学习笔记(8): 脚本系统

可能是还在开发当中的缘故, 我感觉Nebula3中的lua脚本系统不是很完善. 所有的调用都是封装成Command来执行的, 并不像LuaBind那样直接绑定到C++类对象; 而且, 对于C++调用脚本的接口也不是很方...

长平狐
2012/11/12
36
0
生产环境上nginx 不覆盖添加lua模块

需求如下: 需要在nginx配置文件中判断请求中是否带某参数变量,nginx配置本身没有此判断功能。 网上查找资料,可以在nginx中添加lua模块,使用lua的脚本去判断。比较靠谱的文章:CentOS系统...

-悟空-
2015/06/11
2K
2
Redis 文档阅读笔记 (一)

1. Pipelining Redis是一个TCPServer,使用CS模型 1次请求将命令集合发送,Redis执行命令后将结果队列化后,再写入返回 队列化执行结果需要使用内存,如果多次大批量操作需要注意内存的使用 使用...

whales
2017/11/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7 安装 mysql5.7 版本(全)

centos 安装 版本说明 :centos7,mysql5.7 ,不是 centos7 可能有些命令不兼容 安装 mysql-server # 下载并安装 mysql yum wget -i -c http://dev.mysql.com/get/mysql57-community-relea......

sanri1993
18分钟前
3
0
Spring3.x升级到Spring4.x-5.x时关于MappingJacksonHttpMessageConverter的报错问题

在Spring4.x或者以上的版本强使用(不然会报错): org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 如果是Spring4.0获者以下的版本可以使用MappingJacksonH...

code-ortaerc
21分钟前
3
0
OSG 渲染状态污染到其它节点怎么解决?

在根节点补上初始状态

洛克人杰洛
23分钟前
3
0
grid 布局 设置行列间距

本文转载于:专业的前端网站➪grid 布局 设置行列间距 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="widt......

前端老手
35分钟前
3
0
spring-data-elasticsearch 和 Jackson 配合使用的bug

下面先简单描述项目。 项目依赖: dependencies { implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '2.1.0.RELEASE'......

Landas
36分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部