虽然@ efalcao的答案非常好,但您的问题可能表明redis并不能完全满足您的应用需求。 如果您的应用程序具有消息框的性质,请考虑使用 的RabbitMQ ,具有延迟消息或 阿卡 如果你觉得大胆
如果你想用redis进行调度,我建议使用有序集(z *)命令:
http://code.google.com/p/redis/wiki/SortedSets
你能做的是这样的:
ZADD jobs <unix timestamp of when you want the job to run> <job identifier>
例如:
ZADD jobs 1291348355
然后,每隔一段时间(最多每秒)你就可以拉出应该运行的预定作业(或者应该已经运行):
ZRANGEBYSCORE jobs -inf, <current unix timestamp>
热潮,你得到了你的工作。当然,请确保从已排序的集中删除已完成的作业。
您可以使用名称中包含时间组件的多个LIST环。作为时间组件,您可以获取当前秒(0-59)。
您始终将任务添加到列表中以获取当前秒。要获得作业,只在保证的列表上执行BLPOP(低超时),内容早于给定的秒数。
如果您在多个主机上工作,则必须注意,时钟是同步的(NTP)。