解决方案:OpenResty 网站首页数据缓存
关键词
- Web 应用服务器,封装Nginx,集成LUA脚本
- lua脚本实现缓存预热
- lua脚本实现二级缓存读取
- openresty本地缓存
需求: 将网站首页进行独立部署到Nginx中
实现的思路 : Nginx+Lua(OpenResty成熟的产品)
一、OpenResty
OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web平台,由中国人章亦春发起,提供了很多高质量的第三方模块。
OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能Web 应用系统。
360,UPYUN,阿里云,新浪,腾讯网,去哪儿网,酷狗音乐等都是OpenResty 的深度用户。
OpenResty 简单理解成 就相当于封装了Nginx,并且集成了LUA脚本,开发人员只需要简单的其提供了模块就可以实现相关的逻辑,而不再像之前,还需要在nginx中自己编写lua的脚本,再进行调用了。
OpenResty安装
linux安装openresty:
1.添加仓库执行命令
yum install yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
2.执行安装
yum install openresty
3.安装成功后 会在默认的目录如下:
/usr/local/openresty
安装nginx
默认已经安装好了nginx,在目录:/usr/local/openresty/nginx 下
修改/usr/local/openresty/nginx/conf/nginx.conf ,将配置文件使用的根设置为root,目的就是将来要使用lua脚本的时候 ,直接可以加载在root下的lua脚本。
#user nobody; 配置文件第一行原来为这样, 现改为下面的配置
user root root;
测试访问 http://47.103.77.82/

二、首页数据缓存实现思路
缓存预热与二级缓存查询
步骤一: 编写lua脚本实现缓存预热(将mysql里的数据查询出来存入redis)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DVDWQBp5-1630565924386)(七、网站首页高可用解决方案.assets/image-20210804195557591.png)]](https://i-blog.csdnimg.cn/blog_migrate/7f7f87b42ae996f91bb5c0d64f3b2ac1.png)
步骤二: 编写lua脚本实现二级缓存读取
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qeft4T6v-1630565924388)(七、网站首页高可用解决方案.assets/image-20210804195620359.png)]](https://i-blog.csdnimg.cn/blog_migrate/cb4061a22518c66628068f10195c84bb.png)
缓存预热
实现思路:
定义请求:用于查询数据库中的数据更新到redis中。
(1)连接mysql ,读取数据列表,转换为json字符串。
(2)连接redis,将数据列表json字符串存入redis 。
在/root/lua目录下创建data_update.lua ,实现连接mysql 查询数据 并存储到redis中。
ngx.header.content_type="application/json;charset=utf8"
local cjson = require("cjson")
local mysql = require("resty.mysql")
local uri_args = ngx

本文介绍了如何利用OpenResty(Nginx+Lua)搭建Web应用服务器,实现首页数据缓存。首先讲解了OpenResty的特性及安装步骤,然后详细阐述了通过Lua脚本进行缓存预热和二级缓存读取的操作,包括连接数据库、存储到Redis、从Redis读取数据等。最后讨论了如何在OpenResty中添加本地缓存以减轻Redis的压力。
最低0.47元/天 解锁文章
1178

被折叠的 条评论
为什么被折叠?



