lua在项目中的实际应用

Posted 家园叮咚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua在项目中的实际应用相关的知识,希望对你有一定的参考价值。

1 设计分析

1.1 lua设计分析

设计图:

设计图详解:

1 普通模式,用户获得redis数据需要经过nginxphp-fpmphp框架,再到redis

2 直接模式,对于部分高并发请求, 为了提高吞吐率, 有必要砍掉一些环节和应用来实现快速响应,如上图,这里我们将普通模式中的php-fpmphp框架砍掉了。nginx直接从redis获取数据

1.2 redis异构设计分析

lua在项目中的实际应用

2 nginx+lua部署

2.1 LuaJIT 安装

为什么是LuaJIT而不是lua

1. LuaJITLua的一个区别是,LuaJIT的运行速度比标准Lua快数十倍,可以说是一个lua的高效率版本。

2. LuaJIT被设计成全兼容标准Lua 5.1, 因此LuaJIT代码的语法和标准Lua的语法没多大区别。

2.1.1 安装LuaJIT

lua在项目中的实际应用

2.1.2 配置LuaJIT环境变量

lua在项目中的实际应用

2.1.3 lua语言helloword

vim HelloWorld.lua

输入代码并保存:

print("Hello World!")

执行代码进行验证:

[root@localhost lua-5.3.0]# lua HelloWorld.lua

Hello World!

2.2 ngx_devel_kitlua-nginx-module

ngx_devel_kit简称NDK,提供函数和宏处理一些基本任务,减轻第三方模块开发的代码量。

lua-nginx-modulenginxlua模块

lua在项目中的实际应用

2.3 nginx安装编译

lua在项目中的实际应用

echo "/usr/local/lib" >> /etc/ld.so.conf

[root@localhost nginx-1.19.1]# ldconfig 

[root@localhost nginx-1.19.1]# nginx -V

可能报错:

lua在项目中的实际应用

解决办法:

lua在项目中的实际应用

3 测试Lua

[root@localhost nginx]# vim /etc/nginx/nginx.conf

http中添加如下文件

lua在项目中的实际应用

[root@localhost nginx]# vim /etc/nginx/nginx.conf

lua在项目中的实际应用

并将

#user nobody;

前面的#去掉,设置nginx用户为nobody

大家也可以添加自己的nginx用户。

这时,我们重启nginx

[root@localhost nginx-1.19.1]# /usr/sbin/nginx -s reload

发送测试请求

[root@localhost nginx-1.19.1]# curl 127.0.0.1/lua

hello,world

2.4 lua操作redis

vim /etc/nginx/nginx.conf

lua在项目中的实际应用

lua在项目中的实际应用

上面的代码content_by_lua_fifile /etc/nginx/lua/lua_redis.lua; 是将要执行的lua操作的redis代码封装

/etc/nginx/lua/lua_redis.lua

那么,现在我们要去编辑lua_redis.lua这个文件

[root@localhost nginx]# mkdir -p /etc/nginx/lua

[root@localhost nginx]# vim /etc/nginx/lua/lua_redis.lua

输入如下内容:

lua在项目中的实际应用

lua在项目中的实际应用

然后,重启nginx

/usr/sbin/nginx -s reload

我们测试一下:

[root@localhost ~]# curl 127.0.0.1/lua_redis

msg : hello world

可见,成功从redis里面读取数据并输出。

我们再查看redis里面的数据,发现成功插入了msghello world这条数据。

lua在项目中的实际应用

4 通过rabbitmq_worker插入redis异构数据,并用nginx+lua获取

将库存数据异构到redis中:

lua在项目中的实际应用

新建文件代码:

/etc/nginx/lua/lua_redis_sku_num.lua

上面新建的文件不会自动执行,我们要继续修改配置文件,把上面这个lua文档包含进去:

目的: 添加获取配置文件的路由:lua_redis_sku_num

vim /etc/nginx/nginx.conf

上面的代码content_by_lua_fifile /etc/nginx/lua/lua_redis.lua; 是将要执行的lua操作的redis代码封装/etc/nginx/lua/lua_redis_sku_num.lua

我们测试一下:

重启nginx,测试:

[root@localhost ~]# curl 127.0.0.1/lua_redis_sku_num

sku_num_123 : 9998

大功告成!

以上是关于lua在项目中的实际应用的主要内容,如果未能解决你的问题,请参考以下文章

Log4J在实际项目中的应用?

项目MVVM的实际应用

lua脚本在游戏中的应用

lua脚本在游戏中的应用

常见算法在实际项目中的应用

常见算法在实际项目中的应用