概述
OpenResty(ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。
OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 乃至1000K以上并发连接响应的超高性能 Web 应用系统。
OpenResty 简单理解,相当于封装了nginx,并且集成了LUA脚本,开发人员只需要简单的其提供了模块就可以实现相关的逻辑,而不再像之前,还需要在nginx中自己编写lua的脚本,再进行调用了。
安装OpenRest
yum install yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
yum install openresty
默认安装在usr/local/openresty
Nginx
安装openresty会默认安装nginx在usr/local/openresty/nginx
修改usr/local/openresty/nginx/conf/nginx.conf
的第一行
#user nobody; 配置文件第一行原来为这样, 现改为下面的配置。
#将配置文件使用的根设置为root,目的就是将来要使用lua脚本的时候 ,直接可以加载在root下的lua脚本。
user root root;
访问linux服务器地址,即可出现
Welcome to OpenResty!
说明安装成功。
demo:微服务商城-openresty
预计要实现的效果是:
- 从mysql查询首页轮播广告大图
- 将数据存入到redis缓存
- 将数据储如nginx缓存
- Lua脚本 /root/lua/68/update_content.lua
ngx.header.content_type="application/json;charset=utf8"
local cjson = require("cjson")
local mysql = require("resty.mysql")
-- 获取用户请求的参数 (请求url链接的"?"后的参数)
local uri_args = ngx.req.get_uri_args()
-- 请求参数里的"id"参数的值
local id = uri_args["id"]
-- 连接mysql数据库
local db = mysql:new()
db:set_timeout(1000)
-- 连接信息,host,port,database,user,password
local props = {
host = "127.0.0.1",
port = 3306,
database = "changgou_content",
user = "root",
password = "root"
}
-- 获取数据库连接
local res = db:connect(props)
-- sql语句
local select_sql = "SELECT url,pic FROM tb_content WHERE STATUS ='1' AND category_id ="..id.." ORDER BY sort_order"
-- 执行查询语句
res = db:query(select_sql)
-- 关闭数据库
db:close()
-- redis
local redis = require("resty.redis")
local red = redis:new()
red:set_timeout(2000)
-- redis的ip地址及端口
local ip ="127.0.0.1"
local port = 6379
red:connect(ip,port)
-- redis密码,如果没有就直接注释掉
red:auth("root")
--调用API获取数据
local resp, err = red:get("hello")
if not resp then
ngx.say("get msg error : ", err)
return close_redis(red)
end
-- 存储,key="content_1",value=res的json类型,(res为mysql数据库里查询出的数据)
red:set("content_"..id,cjson.encode(res))
red:close()
-- 输出true
ngx.say("{flag:true}")
- 配置nginx的server,拦截
update_content?id=1
请求路径,交给lua脚本处理usr/local/openresty/nginx/conf/nginx.conf
server {
listen
80;
server_name
localhost;
# 用户请求update_content?id=1,将该请求转到/root/lua/68/update_content.lua脚本处理
location /update_content {
content_by_lua_file /root/lua/68/update_content.lua;
}
- 重启nginx
#进入nginx的sbin文件夹 /usr/local/openresty/nginx/sbin
cd
/usr/local/openresty/nginx/sbin
#重启nginx
./nginx -s reload
访问http://127.0.0.1/update_content?id=1
,配置正确的话,就会从数据库查询然后在redis中看到出现key="content_1"的键值对。
下一篇:OpenResty实现缓存(nginx缓存)
https://blog.csdn.net/qq_43220949/article/details/113797684
实现了nginx读取redis数据进行缓存。
容易出现的错误有:
- mysql的连接信息,ip地址等,数据库不同的话,需要修改sql语句。
- local select_sql = “SELECT url,pic FROM tb_content WHERE STATUS =‘1’ AND category_id =”…id…" ORDER BY sort_order"语句ORDER前必须有一个空格,要不sql语句就是错误的。
- redis需要注意redis后台运行,ip地址,开放端口,防火墙,redis有密码需要添加
red:auth("root")
语句
lua写入文件:
-- 写入文件函数,re2s是需要写入的数据,path是文件位置
function FileSaveLoad(re2s,path)
file = io.open(path, "w");
assert(file);
file:write(cjson.encode(re2s));
file:close();
end
--调用函数
FileSaveLoad(res,"/root/lua/68/log.txt");
下一篇:OpenResty实现缓存(nginx缓存)
https://blog.csdn.net/qq_43220949/article/details/113797684
实现了nginx读取redis数据进行缓存。
最后
以上就是传统早晨为你收集整理的一、OpenResty(lua脚本读mysql,写入redis)的全部内容,希望文章能够帮你解决一、OpenResty(lua脚本读mysql,写入redis)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复