Openresty最佳案例 | 第7篇: 模块开发、OpenResty连接Redis

举报
方志朋 发表于 2018/12/22 15:59:06 2018/12/22
【摘要】 在实际的开发过程中,不可能把所有的lua代码写在一个lua文件中,通常的做法将特定功能的放在一个lua文件中,即用lua模块开发。在lualib目录下,默认有以下的lua模块。

Lua模块开发

在实际的开发过程中,不可能把所有的lua代码写在一个lua文件中,通常的做法将特定功能的放在一个lua文件中,即用lua模块开发。在lualib目录下,默认有以下的lua模块。


image.png

image.png


在使用这些模块之前,需要在nginx的配置文件nginx.conf中的http模块加上以下的配置:


image.png


现在来简单的开发一个lua模块:


image.png


在module1.lua文件加上以下的代码:


image.png


开发时将所有数据做成局部变量/局部函数;通过 _M导出要暴露的函数,实现模块化封装。


在/usr/example/lua目录下创建一个test_module_1.lua 文件,在该文件中引用上面的module1.lua文件。


image.png


加上以下代码:


image.png


通过require(“模块名”)来加载模块,如果是多级目录,则需要通过require(“目录1.目录2.模块名”)加载。


在/user/example/example.conf中加上以下的配置:


image.png


多次在浏览器访问:http://116.196.177.123/lua_module_1,浏览器显示:


image.png


安装redis

linux下安装:

cd /usr/servers


image.png


启动redis:


image.png


查看是否启动:


image.png


终端显示:


image.png


可见redis已经启动。


lua连接redis

lua_resty_redis模块地址:https://github.com/openresty/lua-resty-redis


image.png


lua_resty_redis 它是一个基于cosocket API的为ngx_lua模块提供Lua redis客户端的驱动。


创建一个test_redis_basic.lua文件


vim /usr/example/lua/test_redis_basic.lua


 image.png

image.png


上面的代码很简单,通过连接池连接Redis,连接上redis后,通过set一对键值对(msg,helloword)到redis中,然后get(msg),并通过ngx.say()返回给浏览器。


vim /usr/example/example.conf,添加以下的配置代码:


image.png


浏览器访问:http://116.196.177.123/lua_redis_basic


浏览器显示:


image.png


lua_resty_redis支持所有的redis指令,本身Redis就支持lua语言操作。所以lua_resty_redis模块能够提高所有的redis操作的功能。


在很多时候,Redis是设置了口令的,连接时,如果需要验证口令,需要添加 local res, err = red:auth(“foobared”),示例代码如下:


image.png


更多请关注的官方文档https://github.com/openresty/lua-resty-redis

和开涛的博客http://jinnianshilongnian.iteye.com/blog/2187328


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。