推广 热搜: 公司  快速  上海  中国  企业    未来  政策  系统  公司2 

解决方案:OpenResty 网站首页数据缓存

   日期:2024-11-09     作者:xinet    caijiyuan   评论:0    移动:http://www78564.xrbh.cn/mobile/news/26866.html
核心提示:Web 应用服务器,封装Nginx,集成LUA脚本lua脚本实现缓存预热lua脚本实现二级缓存读取openresty本地缓存需求:

  • Web 应用服务器,封装Nginx,集成LUA脚本
  • lua脚本实现缓存预热
  • lua脚本实现二级缓存读取
  • openresty本地缓存

需求 将网站首页进行独立部署到Nginx中

解决方案:OpenResty 网站首页数据缓存

实现的思路 Nginx+Lua(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.添加仓库执行命令

 

2.执行安装

 

3.安装成功后 会在默认的目录如下

 

安装nginx

默认已经安装好了nginx,在目录:/usr/local/openresty/nginx 下

修改/usr/local/openresty/nginx/conf/nginx.conf ,将配置文件使用的根设置为root,目的就是将来要使用lua脚本的时候 ,直接可以加载在root下的lua脚本。

 

测试访问 http://47.103.77.82/ 在这里插入图片描述

缓存预热与二级缓存查询

步骤一 编写lua脚本实现缓存预热(将mysql里的数据查询出来存入redis

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DVDWQBp5-1630565924386)(七、网站首页高可用解决方案.assets/image-20210804195557591.png)]

步骤二 编写lua脚本实现二级缓存读取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qeft4T6v-1630565924388)(七、网站首页高可用解决方案.assets/image-20210804195620359.png)]

缓存预热

实现思路

定义请求:用于查询数据库中的数据更新到redis中。 (1)连接mysql ,读取数据列表,转换为json字符串。 (2)连接redis,将数据列表json字符串存入redis 。

在/root/lua目录下创建data_update.lua ,实现连接mysql 查询数据 并存储到redis中。

 

通过http可以访问上述的脚本

​ 修改/usr/local/openresty/nginx/conf/nginx.conf文件

代码如下

 

重新启动nginx

测试:http://IP地址/data_update

缓存读取

实现思路

定义请求,用户根据广告分类的ID 获取广告的列表。通过lua脚本直接从redis中获取数据即可。

定义请求

 

在/root/lua目录下创建data_read.lua

 

在/usr/local/openresty/nginx/conf/nginx.conf中server下添加配置

 

测试 http://IP地址/data_read

加入openresty本地缓存

如上的方式没有问题,但是如果请求都到redis,redis压力也很大,所以我们一般采用多级缓存的方式来减少下游系统的服务压力。

先查询openresty本地缓存 如果没有再查询redis中的数据

  • 修改/root/lua目录下data_read文件, 内容如下:

     

    可以手动清理本地缓存

    • my_cache : flush_all,这是不释放内存,而是标记过期。

    • my_cache : flush_expired,清除过期。最多清除可选参数

    • max_count,如果不指定参数或者指定参数为0,不设限制。

    修改nginx配置文件vi /usr/local/openresty/nginx/conf/nginx.conf ,http节点下添加配置:

     

    在缓存中没有数据的时候,可以编写相应提示

本文地址:http://www78564.xrbh.cn/news/26866.html    迅博思语 http://www78564.xrbh.cn/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新资讯
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新资讯
点击排行
网站首页  |  二维码  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号