1、简介
lrucache缓存是单进程的,就像redis一样,所以不需要锁。
2、nginx配置
#lua_code_cache off;
# 把这个缓存打开,因为里面的在new对象的时候,只允许实例一个对象,如果不打开的话
# 每次次请求会创建一个对象,变量就没意义了。
location /lua {
default_type text/html;
#content_by_lua_file lua/main.lua;# 加入下面配置
content_by_lua_block {
require("my/cache").go()
}
}
3、测试脚本
local _M = {}
lrucache = require "resty.lrucache"
-- allow up to 200 items in the cache
c, err = lrucache.new(200)
if not c then
error("failed to create the cache: " .. (err or "unknown"))
end
function _M.go()
count = c:get ("count")
ngx.say ("count:", count, " --<br/>")
if not count then
c:set("count", 1)
ngx.say("1azy set i ", c:get ("count"), " <br/>")
else
c:set("count", count+1)
ngx.say("count ", count, "<br/>")
end
end
return _M
启动后访问报错,按照报错的位置创建文件夹和文件即可加载到文件,我把脚本放到了/usr/local/openresty1.15.8/lualib/my/cache.lua里。
my/cache:的配置个人理解,my是项目目录,cache是lua脚本名称。我尝试只写一个main,结果直接报错。都没有取加载文件。
执行访问成功。