Openresty本身也支持开辟内存添加共享缓存的空间,操作api与redis一致

本地缓存的作用

减少查询redis、mysql的操作,实际redis也很快,但是毕竟有网络开销。本地缓存会更快一些!

正文

nginx.conf配置文件http块下添加一个

lua_shared_dict mycache 128m;

配置文件如下

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {

    # 加载lua模块
    lua_package_path "/usr/local/openresty/lualib/?.lua;;";
    # 加载c模块
    lua_package_cpath "/usr/local/openresty/lualib/?.so;;";
    # ① 开启本地共享缓存,会占用内存:150mb 缓存名mycache,自定义 
    lua_shared_dict mycache 128m;
    

    # 在这里配置,这样当前http块内需要用到cjson模块时,都不需要独自加载了
    init_by_lua_block{
        -- 注意,这里面是lua语法,注释是两个杠 不是井号
        cjson=require 'cjson';
        -- mysql=require("resty.mysql");
        -- redis=require 'resty.redis';
    }

    upstream diyServer{   # ban _ tomcat not spuuort
        hash $request_uri; # 让每个请求/item/id=001 访问到固定server,这样可以实现固定url去找固定server。(这样我Aserver的缓存,就不会请求Bserver了)
        server 192.168.31.204:8080;        # ①  自己springboot写一个请求返回(证明openresty发送了http请求)
        keepalive 50;               # ② 一定要添加keepalive保持长链接,减少连接导致的性能损失
        # 一个长连接处理最大请求数(定期释放内存,防止内存溢出)
        keepalive_requests 8192;
    }

    server {
        listen 9000;
        location / {
            default_type text/html;
            content_by_lua '
                ngx.say("<p>Hello, World! second test!</p>")
            ';
        }
        location /abc {
            lua_code_cache off;
            # default_type text/html;
            default_type application/json;
            content_by_lua_file lua/a.lua;
        }
        location /useForOtherUrlRequest{
            internal; # 只允许被内部访问,外部访问就是404
            proxy_pass http://diyServer/user/api/v1/hello/;
        }
    }
}

编写a.lua

-- 获取缓存对象 使用方法时 ngx.share.XXX
local getCache = ngx.shared.mycache;
-- 读取数据
local name = getCache:get('name')
ngx.say('第一次读取本地缓存!',name)
-- 添加数据 key,value,timeout(秒)
getCache:set('name','zhangsan',100)
getCache:set('name','zhangsan',10) -- 同key会被覆盖!也就是超时时间变为10秒了
-- getCache:set('name','zhangsan') -- 同key会被覆盖!也就是不会超时
ngx.say('缓存设定成功!')
-- 读取数据
local name = getCache:get('name')
ngx.say('第二次读取本地缓存!',name)
-- 删除数据
--getCache:delete('name')

-- 特别说明
-- 1、重载配置文件,缓存不会消失
-- 2、nginx重启才会删除缓存数据

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源