lua_shared_dict可以在nginx的多个worker之间共享数据,但是在多进程修改数据的时候会有锁,对性能有影响
1、首先在nginx.conf中定义一个1M的共享缓存,名称是shared_data
- http {
- #在nginx.conf中设置共享缓存的大小是1m,名称是shared_data
- lua_shared_dict shared_data 1m;
-
- server {
- listen 8081;
- location / {
- default_type text/html;
- content_by_lua_file '/lua/hello.lua';
- }
- }
- }
2、创建hello.lua文件获取共享缓存shared_data的内容
- -- 获取nginx的共享缓存shared_data
- local shared_data = ngx.shared.shared_data
- -- 从共享缓存中获取变量i的值
- local i = shared_data:get("i")
- -- 如果i的值不存在
- if not i then
- i = 1
- -- 设置i的值到共享缓存中
- shared_data:set("i", i)
- -- 打印i的值
- ngx.say("lazy set i ", i, "
") - end
- -- i的值加一
- i = shared_data:incr("i", 1)
- -- 打印i的值
- ngx.say("i=", i, "
")