2

HttpLuaModule用来对请求执行一些操作。我这样做的方式是这样设置的ngx.shared.dict

lua_shared_dict foo 10m;

然后我用它rewrite_by_lua来获取和设置这个字典的值。

我的问题是:

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

4

2 回答 2

3

查看与HttpLuaModule相同作者的Resty Lock 库。

于 2013-10-02T06:17:09.570 回答
1

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

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

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

于 2018-01-26T02:49:59.990 回答