nginx + lua redis mysql 实现多级缓存

实现多级缓存,首先得知道什么是多级缓存
多级缓存就是缓存分布在不同的地方

首先缓存在nginx 中,然后 Redis ,然后 mysql

首先新建一个文件nginx_lua.lua脚本

--设置头信息
ngx.header.content_type = "application/json;charset=utf8"
--获取缓存对象
local cache_ngx = ngx.shared.dis_cache;
local contentCache = cache_ngx:get("blog_index");
if contentCache == "" or contentCache == nil then
--引入Redis
    local redis = require("resty.redis");
    --获取Redis对象
    local red = redis:new()
    red:set_timeout(2000)
    red:connect("172.17.0.4", 6379)
    local rescontent = red:get("blog_index");
    if ngx.null == rescontent or false == rescontent or "" == rescontent then
        local cjson = require("cjson");
        --获取MySQL对象
        local mysql = require("resty.mysql");
        local db = mysql:new();
        db:set_timeout(2000)
        local props = {
            host = "172.17.0.3",
            port = 3306,
            database = "blog",
            user = "root",
            password = "root"
        }
        local res = db:connect(props);
        local select_sql = "select * from blog_user"
        res = db:query(select_sql);
        local responsejson = cjson.encode(res);
        red:set("blog_index", responsejson);
        ngx.say(responsejson);
        db:close()
        else
        cache_ngx:set("blog_index", rescontent, 10 * 60);
        ngx.say(rescontent)
    end
    red:close()
    else
    ngx.say(contentCache)
end

nginx 配置文件


#这个是必须加的。表示设置了一块共享的内存区域,大小为10m.
lua_shared_dict dis_cache 10m;

server {
    listen       90;
    server_name  localhost;
    root   /docker/openresty/www;
    index  index.html index.htm;
    location /lmrs_home_index {
        content_by_lua_file /docker/openresty/www/nginx_lua.lua;
    }
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值