Dictionary 如何创建异步;“cron-like”;nginx中的调度器
我需要在Dictionary 如何创建异步;“cron-like”;nginx中的调度器,dictionary,nginx,lua,cron,redis,Dictionary,Nginx,Lua,Cron,Redis,我需要在nginx服务器中创建一个异步调度程序来更新变量。让我给你一个例子,我的意思是什么,为什么我需要它 想象一下,该配置文件如下所示: http { lua_shared_dict foo 5m; server { location /set { content_by_lua ' local foo = ngx.shared.foo ngx.say(foo:get("123
nginx
服务器中创建一个异步调度程序来更新变量。让我给你一个例子,我的意思是什么,为什么我需要它
想象一下,该配置文件如下所示:
http {
lua_shared_dict foo 5m;
server {
location /set {
content_by_lua '
local foo = ngx.shared.foo
ngx.say(foo:get("12345"))
';
}
}
}
我指定了驻留在共享内存中且所有工作进程都可以访问的变量foo
。我想做的是从lua
脚本中设置这些值,这些值将在每个minite中调用。仅供参考,它将转到Redis
,然后检索必要的数据,并更新此变量。我知道我可以在每次通话中通过content\u-by\u-lua
做到这一点,但对于巨大的流量来说,这是非常低效的
我想一个单独的过程,将触发每分钟左右,只是去和一个任务。在nginx中是否有类似的东西或者是否有任何模块可以帮助我实现这一点?您可以使用ngx\u lua提供的新ngx.timer API。有关详细信息,请参阅文档: 您可以在计时器处理程序中创建一个新的计时器,使计时器像cronjob一样不断触发;) 顺便说一句,计时器是每个工作进程的,您可以在计时器处理程序中使用lua resty lock库来确保所有nginx工作进程中一次只有一个计时器处于活动状态:您可以使用API。与使用递归API相比,建议使用API