ngx.shared.DICT可以使用吗?

时间:2013-10-01 15:00:05

标签: dictionary nginx lua

我正在使用HttpLuaModule对请求执行某些操作。我这样做的方式就是设置ngx.shared.dict,如下所示:

lua_shared_dict foo 10m;

然后我使用rewrite_by_lua来获取和设置此字典的值。

我的问题是:

在高负载期间,每秒需要处理数百个请求。使用这本字典是否安全?例如,在我的脚本中,此字典每隔60秒从Redis更新一次。如果我为字典中的每个键:值对设置了到期时间。然后突然所有连接都需要访问此密钥,但它不存在,然后所有连接都将执行Redis调用以检索数据和更新字典。真的吗?或者它可能是为其他一些用例而设计的?

2 个答案:

答案 0 :(得分:2)

与HttpLuaModule同一作者查看Resty Lock library

答案 1 :(得分:1)

ngx.shared.DICT是线程安全的。

  

所有这些方法都是原子操作,也就是说,对于同一个lua_shared_dict区域的多个nginx工作进程的并发访问是安全的。

https://github.com/openresty/lua-nginx-module#ngxshareddict