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