Ruby on rails 通过resque在Rails中使用redis处理长时间挂起的任务是否安全?
对于Rails中的长时间挂起任务(例如:Ruby on rails 通过resque在Rails中使用redis处理长时间挂起的任务是否安全?,ruby-on-rails,heroku,resque,resque-scheduler,Ruby On Rails,Heroku,Resque,Resque Scheduler,对于Rails中的长时间挂起任务(例如:Resque.enqueue_in(7.days,JobClass)),使用Resque和Resque调度程序gems,使用Resque有多安全?值得一提的是,该实例正在Heroku上运行。失去队列的可能性有多大?半持久性 根据我的评论,使用Redis(Resque使用的)的缺点是潜在的停机时间 作为web应用程序的“RAM”,Redis存储数据。这基本上意味着它只在运行时保留您的数据。任何停机都会丢失您的队列 这是你问题的关键- 你能承受得起排队的损失吗
Resque.enqueue_in(7.days,JobClass)
),使用Resque和Resque调度程序gems,使用Resque有多安全?值得一提的是,该实例正在Heroku上运行。失去队列的可能性有多大?半持久性
根据我的评论,使用Redis(Resque使用的)的缺点是潜在的停机时间
作为web应用程序的“RAM”,Redis存储数据。这基本上意味着它只在运行时保留您的数据。任何停机都会丢失您的队列
这是你问题的关键-
你能承受得起排队的损失吗?
答案是你唯一能回答的 不过,我会考虑若干因素:
底线是,我强烈建议将适当的数据存储在表中,然后只在需要时处理请求 队列的基础是,如果队列发生故障,您需要能够重建它。如果您仅在redis中存储您的值,这将成为一个主要的瓶颈
从长远来看,访问数据库是值得的。如果您准备将数据保存在数据库中,那么Redis的原理肯定与此类似。如果您需要再保存它们(并且无法承受队列被重置的可能性),为什么不将它们放入某种持久性存储中,如MYSQL,然后将当天的队列放入Redis?@RichPeck,是的,我正在考虑将这些作业存储在某种持久性存储中,但我怎样才能将resque队列保存到数据库中呢?用一个模型为它创建一个表,并将任何新作业保存到数据库中。然后每天,通过一个cron作业(“Heroku调度器”),您就可以将当天的作业拉到redis中。然后,Reseque将能够通过Redis工作queue@RichPeck,好的,我知道了,谢谢,但是丢失/重置redis队列的机会太大了,将作业保存到db是值得的吗?@RichPeck,thx作为回复,您可以将这些评论重写为答案,我会接受它。