`

lua_shared_dict

 
阅读更多
1.定义一块名为my_cache的共享内存空间,内存大小为size。
2.通过该命令定义的共享内存对象对于Nginx中所有worker进程都是可见的
3.当Nginx通过reload命令重启时,共享内存字典项会从新获取它的内容
4.当时当Nginx退出时,字典项的值将会丢失
http{
  lua_shared_dict my_cache 128m;
  ...
}


safe_set类似 set 方法,但当共享内存区块存储空间不足时,不覆盖 (最近最少使用的) 有效的项 (非过期项)。此时,它将返回 nil 和字符串 "no memory" (内存不足)。
local my_cache = ngx.shared.my_cache;
local succ, err, forcible = my_cache:safe_set("a",1)
if not succ then
  ngx.say("set fail,err:"..err.."考虑增加空间")
  return
end
ngx.say(my_cache:get("a"))

1


5

add类似 set 方法,但仅当存储字典 ngx.shared.DICT 中 不存在 该 key 时执行存储 key-value 对。
如果参数 key 在字典中已经存在 (且没有过期),success 返回值为 false,同时 err 返回 "exist" (已存在)。
local succ, err, forcible = my_cache:safe_add("a",2)
if not succ then
  ngx.say("add fail,err:"..err)
  return
end

1
add fail,err:exists


清空:
my_cache:flush_all()--这个不释放内存,而是标记过期,不过可能会不定期的flush_expired,所以不要依赖已过期项的可用性
--清除字典中已过期的的内容,最多清除可选参数 max_count (最大数量) 个。当参数 max_count 值为 0 或者未指定时,意为无数量限制。返回值为实际清除的数量
local expired_count = my_cache:flush_expired()
ngx.say(expired_count)
分享到:
评论

相关推荐

    lua+nginx动态更新配置.zip

    更新频率比较慢,使用lua_shared_dict进行存储。如下定义: lua_shared_dict sysconfig 10k; 成员包括: "time":配置文件的生成的时间戳(用来判断文件是否有更新)eg:1585209315 "kxsip":与可信控制服务数据交互...

    lua-nginx-module-0.10.13

    ngx_lua_shared_dict则提供了在不同Lua VM之间共享数据的机制,适用于实现缓存和计数器等功能。 三、Lua-Nginx-Module的使用 3.1 安装与配置 安装lua-nginx-module通常涉及编译Nginx源码,并在编译时添加lua-nginx...

    Nginx-ngx_lua模块原理和内置函数.docx

    - **lua_need_request_body / lua_shared_dict / lua_socket_*:** - `lua_need_request_body` 控制是否需要读取请求体,这对于处理 POST 请求尤为重要。 - `lua_shared_dict` 创建全局共享表,多个 worker 进程间...

    lua-resty-limit-traffic:Lua库,用于限制和控制OpenRestyngx_lua中的流量

    名称 lua-resty-limit-traffic-用于限制和控制... lua_shared_dict my_limit_req_store 100m ; server { location / { access_by_lua_block { -- well, we could put the require() and new() calls in our own Lua

    nginx-lua-prometheus:用Lua编写的Nginx的Prometheus度量库

    适用于Nginx的Prometheus指标库 这是一个Lua库,可以与Nginx... lua_shared_dict prometheus_metrics 10M; lua_package_path "/path/to/nginx-lua-prometheus/?.lua;;"; init_worker_by_lua_block { prometheus = r

    lua-resty-healthcheck:用于OpenResty的Healthcheck库,以验证上游服务状态

    lua_shared_dict my_worker_events 8m ; init_worker_by_lua_block { local we = require "resty.worker.events" local ok, err = we.configure({ shm = "my_worker_events" , interval = 0.1 }) if not ok then ...

    nginx配置lua所需组件

    此外,`lua_shared_dict`可以用来在Nginx实例间共享数据,`lua休息`用于设置定时任务,`log_by_lua`允许在日志记录中使用Lua,而`rewrite_by_lua`则可以在重写规则中执行Lua代码。 为了调试和优化Lua脚本,还可以...

    nginx-echo-lua-module模块安装以及实验

    利用 Lua 共享字典(lua_shared_dict)可以实现自定义的缓存策略。 3. **错误处理** 可以在 Lua 脚本中捕获和处理错误,保证服务的稳定性。 4. **HTTP 请求处理** 使用 `ngx.req` 对象,可以在 Lua 中处理 ...

    Nginx添加Lua扩展模块.rar

    lua_shared_dict mydict 10m; # 创建一个共享内存字典 location /lua_test { content_by_lua_file /path/to/your/lua/script.lua; # 指定Lua脚本文件 } ``` 4. **启动或重启Nginx**: 修改配置后,记得运行`...

    nginx-lua-GraphicsMagick

    lua_shared_dict image_cache 100m; ... } ``` 然后,创建一个Nginx的location配置,用于处理图片请求。在这个location中,我们将调用Lua脚本来处理图片: ```nginx location /image/ { content_by_lua_file /...

    lua-nginx-module-0.10.9rc7

    - **Lua变量和共享内存**:通过`ngx.shared.DICT`可以创建共享内存区,实现不同工作进程间的通信和数据共享。 - **HTTP客户端**:使用`ngx.location.capture`或`ngx.location.capture_multi`可以在Lua中发起HTTP请求...

    微服务Api网关框架40-45.7z

    lua_shared_dict允许我们在Lua脚本中创建共享内存区域,用于存储和检索数据,提高请求处理速度,减少对后端服务的依赖。 2. **41.openresty执行流程.mp4**:这部分内容可能会详细讲解OpenResty的执行过程,从接收...

    lua-resty-worker-events:Nginx在Pure Lua中的跨工作者事件

    lua-resty-worker-事件 Nginx工作进程的进程间事件 ... lua_shared_dict process_events 1m ; init_worker_by_lua_block { local ev = require "resty.worker.events" local handler = function(data, eve

    wechat-nginx-lua-jssdk:Nginx+Lua实现微信分享接口 JS-SDK

    lua_shared_dict wechat 1m; server {} 新增 location = /wechat/signature { resolver 8.8.8.8; access_by_lua_file conf/lua/sign.lua; } 修改 lua/sign.lua _M.appId = 'your appid' _M.appSecret = 'your app...

    OpenWAF:基于openresty的Web安全保护系统

    lua_shared_dict twaf_shm 50m ; upstream test { server 0.0.0.1 ; #just an invalid address as a place holder balancer_by_lua_file twaf_balancer.lua; } server { listen 443 ssl; server_name _; ss

    lua-nginx-module.zip

    4. 会话管理:使用lua_shared_dict可以实现基于内存的共享数据存储,从而实现会话管理。 5. 缓存机制:lua-nginx-module支持基于内存的缓存,可以提高高并发场景下的响应速度。 四、lua-nginx-module的使用 在...

    nginx-lua-extras:用于NGINX Extras存储库的Lua模块软件包

    此外,Nginx-Lua-Extras还提供了丰富的模块,如`lua_resty_http`用于发送HTTP请求,`lua_resty_mysql`用于数据库操作,`lua_shared_dict`用于内存共享字典,以及`lua_resty_websocket`支持WebSocket通信等。...

    lua-shdict-nginx-module

    名称ngx_http_lua_share_dict... 参数接受大小单位,例如k和m : http { lua_shared_mem dict 10m ; ... } 使用以下脚本获取Lua表: local t = require ( ' resty.shdict ' ) local dict = t. dict 以下示例将基于

Global site tag (gtag.js) - Google Analytics