写点什么

openresty 共享内存的使用

  • 2025-12-11
    北京
  • 本文字数:733 字

    阅读完需:约 2 分钟

本文分享自天翼云开发者社区《openresty共享内存的使用》.作者:王****兰

在 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 = 1local new_valuenew_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
复制代码


用户头像

还未添加个人签名 2022-02-22 加入

天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。

评论

发布
暂无评论
openresty共享内存的使用_CDN_天翼云开发者社区_InfoQ写作社区