采用nginx+lua+redis进行页面缓存
1.配置nginx+lua+redis环境
安装lua解释器
wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz
配置lua Lib
和include/luajit-$version
目录为环境变量
下载ngx_devel_kit
和lua-nginx-module
https://codeload.github.com/simpl/ngx_devel_kit/tar.gz/v0.2.19
https://codeload.github.com/openresty/lua-nginx-module/tar.gz/v0.9.10
安装配置nginx
http://nginx.org/download/nginx-1.4.7.tar.gz(http://nginx.org/en/download.html
nginx configue
时候,将ngx_devel_kit
和lua-nginx-module
两个编入到nginx
中
make 和make install
使用redis
lua解析json格式的数据 http://www.kyne.com.au/~mark/software/lua-cjson.php
(默认安装就行)
lua封装redis调用接口,https://github.com/openresty/lua-resty-redis
,安装,(并且redis.lua上层目录要有resty,因为require “resty.redis”,看代码,负责会出现找不到库)
lua_package_path "/opt/vendor/lua/?.lua;;";//指定redis.lua路径,;;指定默认路径 加在http段里
init_by_lua_file /usr/local/nginx/html/init.lua;
lua_code_cache off;//避免lua代码缓存,更改代码执行失效
location /lua {
content_by_lua_file /usr/local/nginx/html/content.lua;
} 加在加入一个location
拦截请求保存相应的页面缓存
location ~ /(index\.html|(goods|event)/[0-9]+\.html|video/list\.html|channel/class\.html)? {
content_by_lua_file /app/nginx/conf/content.lua;
}
加在加入一个location,拦截相应的请求,保存页面到redis缓存
缓存的更新与删除
新增定时项目,定时循环页面缓存redis的Key值,根据key值访问相应接口,返回的结果值MD5之后保存到redis的不用区。
添加定时任务定时扫描保存MD5缓存的key,分页面进行操作,比较接口返回结果的MD5值和redis缓存是否一致,不一致删除相应的redis页面缓存,对于商品的特别处理,商品下市删除相应的redisMD5缓存和redis页面缓存。