- Web 应用服务器,封装Nginx,集成LUA脚本
- lua脚本实现缓存预热
- lua脚本实现二级缓存读取
- openresty本地缓存
需求: 将网站首页进行独立部署到Nginx中
实现的思路 : 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)
步骤二: 编写lua脚本实现二级缓存读取
缓存预热
实现思路:
定义请求:用于查询数据库中的数据更新到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节点下添加配置:
在缓存中没有数据的时候,可以编写相应提示
-