基于Resque和Redis的任务管理实践(resque redis)
面对现在互联网架构中经常都会遇到的任务处理,有时我们希望将任务处理从主线程中分布到第三台机器,而这就是 Resque 和 Redis 强大的地方。它们可以帮助我们快速、高效地构建可靠的任务处理系统。
Resque 是用 Ruby 编写的一个任务队列框架,可以让我们使用起来很方便,并且有多种不同的驱动它的动力,如 Redis 。Resque 的工作流程如下:程序会将任务放入队列(被称为 jobs ),之后 Resque 会从队列中取出这些任务并交给它定义的 worker 去处理。
Redis 是一个开源的高性能键值( key-value )数据库,能够在各种场景下运行,而且往往可以运行在多个服务器上,提供更强大的性能。 Redis 作为 Resque 背后的存储,负责将任务和状态保存在其中,而 Resque 负责任务的实际处理过程。
下面是一个使用 Resque 和 Redis 实现任务管理系统的简单例子:
我们得依赖 Resque 和 Redis,创建 Gemfile ,添加如下代码:
gem 'resque', '~> 1.27.2'
gem 'redis', '~> 4.0.1'
接下来,运行 `bundle install `执行安装。
然后,新建 `worker.rb` 文件,代码如下:
require 'resque'
class Worker @queue = :default # The name of the queue to read from
def self.perform(task_id) # Do the work!
# ... end
end
启动 worker,代码如下:
$ QUEUE=default rake resque:work
以上就是基于 Resque 和 Redis 的任务管理实践。Resque 和 Redis 的配合可以极大地提升系统处理任务的能力,帮助我们快速构建可靠的任务处理系统。