searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

openresty共享内存的使用

2024-11-12 09:24:54
9
0

在 OpenResty 中,ngx.shared 用于访问共享内存区域,这在处理高并发请求时非常有用。以下是一些常见的使用场景和示例代码。

首先,需要在 Nginx 配置文件中定义一个共享内存区域。例如,在 http 块中添加以下配置:

lua_shared_dict my_shared_dict 10m;

然后可以在lua脚本中使用:

local shared_dict = ngx.shared.my_shared_dict

-- 设置键值对
local key = "example_key"
local value = "example_value"
local success, err = shared_dict:set(key, value)
if not success then
    ngx.log(ngx.ERR, "Failed to set key: ", err)
end

-- 获取键值对
value = shared_dict:get(key)

-- 删除键值对
success, err = shared_dict:delete(key)
if not success then
    ngx.log(ngx.ERR, "Failed to delete key: ", err)
end

-- 设置键值对并指定超时时间
key = "example_key"
value = "example_value"
local ttl = 60  -- 超时时间,单位为秒
local success, err = shared_dict:set(key, value, ttl)
if not success then
    ngx.log(ngx.ERR, "Failed to set key: ", err)
end

-- 原子增加一个键的值
key = "counter"
local increment = 1
local new_value
new_value, err = shared_dict:incr(key, increment)
if not new_value then
    ngx.log(ngx.ERR, "Failed to increment counter: ", err)
end

-- 获取共享内存区域中的所有键
local keys = shared_dict:get_keys()
for _, key in ipairs(keys) do
    ngx.say("Key: ", key)
end

-- 清空共享内存区域中的所有键值对
success, err = shared_dict:flush_all()
if not success then
    ngx.log(ngx.ERR, "Failed to flush all: ", err)
end
0条评论
0 / 1000
王****兰
4文章数
0粉丝数
王****兰
4 文章 | 0 粉丝
王****兰
4文章数
0粉丝数
王****兰
4 文章 | 0 粉丝
原创

openresty共享内存的使用

2024-11-12 09:24:54
9
0

在 OpenResty 中,ngx.shared 用于访问共享内存区域,这在处理高并发请求时非常有用。以下是一些常见的使用场景和示例代码。

首先,需要在 Nginx 配置文件中定义一个共享内存区域。例如,在 http 块中添加以下配置:

lua_shared_dict my_shared_dict 10m;

然后可以在lua脚本中使用:

local shared_dict = ngx.shared.my_shared_dict

-- 设置键值对
local key = "example_key"
local value = "example_value"
local success, err = shared_dict:set(key, value)
if not success then
    ngx.log(ngx.ERR, "Failed to set key: ", err)
end

-- 获取键值对
value = shared_dict:get(key)

-- 删除键值对
success, err = shared_dict:delete(key)
if not success then
    ngx.log(ngx.ERR, "Failed to delete key: ", err)
end

-- 设置键值对并指定超时时间
key = "example_key"
value = "example_value"
local ttl = 60  -- 超时时间,单位为秒
local success, err = shared_dict:set(key, value, ttl)
if not success then
    ngx.log(ngx.ERR, "Failed to set key: ", err)
end

-- 原子增加一个键的值
key = "counter"
local increment = 1
local new_value
new_value, err = shared_dict:incr(key, increment)
if not new_value then
    ngx.log(ngx.ERR, "Failed to increment counter: ", err)
end

-- 获取共享内存区域中的所有键
local keys = shared_dict:get_keys()
for _, key in ipairs(keys) do
    ngx.say("Key: ", key)
end

-- 清空共享内存区域中的所有键值对
success, err = shared_dict:flush_all()
if not success then
    ngx.log(ngx.ERR, "Failed to flush all: ", err)
end
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0