使用Redis延迟执行/安排?

Ale*_*ysh 4 scheduling delayed-execution redis

任何根据Redis做延迟任务执行(即调度)的技巧?

也许是一些聪明的方法来延迟BLPOP给定的秒数?

efa*_*cao 16

如果你想用redis进行调度,我建议使用有序集(z*)命令:

http://code.google.com/p/redis/wiki/SortedSets

你能做的是这样的:

ZADD jobs <unix timestamp of when you want the job to run> <job identifier>
Run Code Online (Sandbox Code Playgroud)

例如:

ZADD jobs 1291348355
Run Code Online (Sandbox Code Playgroud)

然后,每隔一段时间(最多每秒)你就可以拉出应该运行的预定作业(或者应该已经运行):

ZRANGEBYSCORE jobs -inf, <current unix timestamp>
Run Code Online (Sandbox Code Playgroud)

热潮,你得到了你的工作.当然,请确保从已排序的集中删除已完成的作业.

  • 哦,老线程但是 - 亚历山大 - 你可以使用一种调度程序线程,它每N秒检查一次排序集合,只是将作业从排序集移动到主要作业列表,而主要工作工作者是blpop'ing. (2认同)