Chinaunix首页 | 论坛 | 博客
  • 博客访问: 539249
  • 博文数量: 906
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7350
  • 用 户 组: 普通用户
  • 注册时间: 2022-03-07 15:28
个人简介

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

文章分类

全部博文(906)

文章存档

2026年(11)

2025年(202)

2024年(244)

2023年(247)

2022年(202)

我的朋友

分类: 网络与安全

2025-12-11 18:07:33

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

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

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

点击(此处)折叠或打开

  1. lua_shared_dict my_shared_dict 10m

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

点击(此处)折叠或打开

  1. local shared_dict = ngx.shared.my_shared_dict

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

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

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

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

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

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

  37. -- 清空共享内存区域中的所有键值对
  38. success, err = shared_dict:flush_all()
  39. if not success then
  40.     ngx.log(ngx.ERR, "Failed to flush all: ", err)
  41. end

阅读(5) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~