目录
1.什么是lua??????
2.特点???????
3.安装???????
4.Lua使用??????
5.Lua的注释???????
6.数据类型???????
Lua是一种轻量、小巧的脚本语言,用标准C语言编写并以源代码形式开发。设计的目的是为了嵌入到其他应用程序中,从而为应用程序提供灵活的扩展和定制功能。
简洁、易学、易用
跨平台特性
高效性
可扩展性
泛型编程能力强
支持面向对象编程
可嵌入性
下载地址:https://www.lua.org/download.html
上传到Linux ,并解压缩即可
?
交互式是指可以在命令行输入程序,然后回车就可以看到运行的效果。
脚本式是将代码保存到一个以lua为扩展名的文件中并执行的方式。
chmod +x 文件名
关于Lua的注释要分两种:
- 单行注释
- 多行注释
- - 注释内容
- -【【
? ? 注释的内容
- -】】
注:若要取消多行注释 只需在前面加? - -
nil(空,无效值)
boolean(布尔,true/false)?只会将false和nil视为假,其他的都视为真
number(数值)
string(字符串)
function(函数)
table (表) eg? a={1,2,3} a[1]=1;下标从1开始
thread(线程)
userdata(用户数据)
if then elseif else
if语句先测试其条件,并根据条件是否满足执行相应的then部分或else部分。else部分是可选的。
while 条件 do
? ? ? ? 循环体
end
repeat
? ? 循环体
until 条件
for param=exp1,exp2,exp3 do
? ?循环体
end
注: exp1:开始的值
? ? ? ? exp2:结束的值
? ? ? ? exp3:步长
for i,v in ipairs(×) do
? 循环体
end
注: i:数组的索引值
? ? ? ??v:对应索引的数组元素值
?ipairs:迭代函数 ,x是要遍历的数组
? ? ?
?
?ngx-lua模块通过将lua解释器集成进Nginx,可以采用lua脚本实现业务逻辑,由于lua的紧凑、快速以及内建协程,所以在保证高并发服务能力的同时极大地降低了业务逻辑实现成本。
OpenResty是一个基于Nginx与Lua的高性能Web 平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。本身OpenResty内部就已经集成了Nginx和Lua,所以我们使用起来会更加方便
下载地址:https://openresty.org/cn/download.html
./configure --prefix=/usr/local/openresty
yum -y install openssl openssl-devel
location /lua {
default_type 'text/html';
content_by_lua 'ngx.say("<h1>hello xz</h1>")';
}
location /getByGender {
default_type 'text/html';
set_by_lua $param "
--获取请求url上的参数对应的值name gender
local uri_args = ngx.req.get_uri_args()
local name = uri_args['name']
local gender = uri_args['gender']
--条件判断if gender 1 先生 0 女士
if gender == '1' then
return name..'先生'
elseif gender == '0' then
return name..'女士'
else
return name
end
";
charset utf-8;
return 200 $param;
}
提供了访问Redis的详细API,包括创建对接、连接、操作、数据处理等。这些API基本上与Redis的操作--对应。
- (1) redis = require "resty.redis" : 引入相关内容
- (2) new 语法: redis,err = redis:new(),创建一个Redis对象。
- (3) connect 语法:ok,err=redis:connect(host,port[,options_table]),设置连接Redis的连接信息。ok:连接成功返回 1,连接失败返回nil? err:返回对应的错误信息
- (4) set_timeout 语法:redis:set_timeout(time),设置请求操作Redis的超时时间。
- (5) close 语法: ok,err = redis:close(),关闭当前连接,成功返回1,失败返回nil和错误信息
- (6) redis命令对应的方法在1ua-resty-redis中,所有的Redis命令都有自己的方法,方法名字和命令名字相同,只是全部为小写。
location /redis {
default_type "text/html";
content_by_lua_block {
-- 引入redis对应接口对象
local redis = require "resty.redis"
-- 创建一个redis对象
local red = redis:new()
-- 设置超时时间
red:set_timeout(1000)
-- 获取链接
local ok,err = red:connect("192.168.20.130",6379)
if not ok then
ngx.say("failed to connection redis",err)
return
end
-- 获取密码
ok,err = red:auth("123456")
if not ok then
ngx.say("failed to password",err)
return
end
-- 往redis中存数据
ok,err = red:set("user","tom")
if not ok then
ngx.say("failed to set user",err)
return
end
-- 从redis中取数据
local res,err = red:get("user")
ngx.say(res)
-- 关闭redis连接
red:close()
}
}
?