添加共享内存字典实现,支持并发安全的 key-value 存储: - SharedDictManager: 管理多个命名的 SharedDict 实例 - SharedDict: 带 LRU 汰出策略的内存字典 - 支持 set/get/add/incr/size/free_space 操作 - 支持带 TTL 的过期机制 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
43 lines
1.0 KiB
Lua
43 lines
1.0 KiB
Lua
-- shared_dict.lua - 共享字典示例
|
|
-- 此脚本演示 ngx.shared.DICT 的使用
|
|
|
|
-- 获取共享字典(需要在配置中预先定义)
|
|
local dict = ngx.shared.DICT("my_cache")
|
|
|
|
-- 设置值
|
|
local ok, err = dict:set("user_count", "100")
|
|
if not ok then
|
|
ngx.log(ngx.ERR, "failed to set user_count: ", err)
|
|
end
|
|
|
|
-- 设置带 TTL 的值
|
|
ok, err = dict:set("session_token", "abc123", 3600) -- 1 小时过期
|
|
if not ok then
|
|
ngx.log(ngx.ERR, "failed to set session_token: ", err)
|
|
end
|
|
|
|
-- 获取值
|
|
local value, flags = dict:get("user_count")
|
|
ngx.say("user_count: ", value)
|
|
|
|
-- 自增计数器
|
|
local new_val, err = dict:incr("request_count", 1)
|
|
ngx.say("request_count: ", new_val)
|
|
|
|
-- 添加值(仅不存在时)
|
|
ok, err = dict:add("unique_key", "value")
|
|
if ok then
|
|
ngx.say("unique_key added successfully")
|
|
else
|
|
ngx.say("unique_key already exists")
|
|
end
|
|
|
|
-- 查看字典大小
|
|
local size = dict:size()
|
|
ngx.say("dict size: ", size)
|
|
|
|
-- 获取剩余容量
|
|
local free = dict:free_space()
|
|
ngx.say("free space: ", free)
|
|
|
|
ngx.say("Shared dict demo completed!") |