Vor*_*Vor 2 cron lua dictionary nginx redis
我需要在nginx服务器内创建一个异步调度程序来更新变量.让我举个例子,我的意思是什么,为什么我需要它.
想象一下看起来像这样的配置文件:
http {
lua_shared_dict foo 5m;
server {
location /set {
content_by_lua '
local foo = ngx.shared.foo
ngx.say(foo:get("12345"))
';
}
}
}
Run Code Online (Sandbox Code Playgroud)
我指定foo了驻留在共享内存中的变量,并且所有工作进程都可以访问它.我想要做的是从lua每个minite调用的脚本中设置这些值.仅供参考,它将转到Redis然后检索必要的数据,并更新此变量.我知道我可以content_by_lua在每次通话中都这样做,但对于大量的流量来说效率非常低.
我想要一个单独的过程,每分钟左右就可以触发一个任务.有没有这样的东西nginx或有什么模块可以帮助我吗?
小智 6
您可以使用ngx_lua提供的新ngx.timer API.有关详细信息,请参阅文档
https://www.nginx.com/resources/wiki/modules/lua/#ngx-timer-at
您可以在计时器处理程序中创建一个新计时器,使计时器像cronjob一样保持触发;)
顺便说一下,计时器是每个工作进程,您可以在计时器处理程序中使用lua-resty-lock库,以确保在所有nginx工作程序中一次只有一个计时器处于活动状态:https://github.com/agentzh/LUA-resty锁
| 归档时间: |
|
| 查看次数: |
3271 次 |
| 最近记录: |