简介
在开发Ruby on rails应用程序)时,您可能会发现您的应用程序任务应该以异步方式执行。处理数据、发送批处理电子邮件或与外部API交互都是可以使用后台作业异步完成的工作的示例。使用后台作业可以将可能耗时的任务分流到后台处理队列,从而释放原始的请求/响应周期,从而提高应用程序的性能。
Sidekiq是一个可以在Rails应用程序中实现的使用更广泛的后台作业框架。它由Redis支持,这是一个以其灵活性和性能而闻名的内存键值存储。Sidekiq使用Redis作为作业管理存储来处理每秒数千个作业。
在本教程中,您将向现有的Rails应用程序添加Redis和Sidekiq。您将创建一组Sidekiq Worker类和方法来处理:
- 将濒危鲨鱼信息从项目库中的CSV文件批量上传到应用数据库。
- 删除这些数据。
完成后,您将拥有一个演示应用程序,它使用工作者和作业来异步处理任务。这将是一个很好的基础,您可以使用本教程作为出发点,向自己的应用程序添加工人和作业。
前提条件
要学习本教程,您需要:
- 运行Ubuntu 18.04的本地机器或开发服务器。您的开发机器应该有一个拥有管理权限的非超级用户,并且防火墙配置了
ufw
。有关如何设置的说明,请参阅我们的使用Ubuntu 18.04的初始服务器设置》教程。 - 本地机器或开发服务器上安装了node.js和npm)。本教程使用Node.js版本10.17.0和NPM版本6.11.3。有关在Ubuntu18.04上安装node.js和npm的指导,请按照How to Install Node.js on Ubuntu 18.04.》(如何在Ubuntu上安装Node.js)的
使用PPA安装
** 部分中的说明进行操作 - 本地机器或开发服务器上安装的纱线包管理器。您可以按照官方文档中的安装instructions进行操作。
- ruby,rbenv,和rails安装在本地机器或开发服务器上,遵循如何在Ubuntu 18.04.上使用rbenv安装Ruby on rails》中的 步骤1-4** 本教程使用Ruby 2.5.1、rbenv 1.1.2和rails 5.2.3。
- 安装了SQLite,遵循如何构建Ruby on rails Application.]的 步骤1** 本教程使用SQLite 3 3.22.0。
- Redis安装,按照如何在Ubuntu 18.04.上安装和保护Redis]中的 步骤1-3** 操作本教程使用的是Redis 4.0.9。
第一步-克隆项目并安装依赖项
我们的第一步是从DigitalOcean社区GitHub帐户克隆rails-bootstrap.存储库该资源库包含How to Add Bootstrap to a Ruby on rails Application,]中描述的设置代码,其中解释了如何将Bootstrap)添加到现有的rails 5项目中。
将仓库克隆到名为rails-side kiq
的目录下:
1git clone https://github.com/do-community/rails-bootstrap.git rails-sidekiq
导航到rails-side kiq
目录:
1cd rails-sidekiq
为了使用代码,您首先需要安装项目的依赖项,这些依赖项列在其Gemfile中。您还需要将Sidekiq gem)添加到项目中以使用Sidekiq和Redis。
使用Nan
或您喜欢的编辑器打开项目的Gemfile进行编辑:
1nano Gemfile
在主项目依赖项(开发依赖项以上)中的任意位置添加gem:
1[label ~/rails-sidekiq/Gemfile]
2. . .
3# Reduces boot times through caching; required in config/boot.rb
4gem 'bootsnap', '>= 1.1.0', require: false
5gem 'sidekiq', '~>6.0.0'
6
7group :development, :test do
8. . .
添加完宝石后,保存并关闭该文件。
使用以下命令安装gem:
1bundle install
您将在输出中看到redis
gem也作为side kiq
的必备项安装。
接下来,您将安装您的Yarn依赖项。因为这个rails 5项目已经被修改为与webpack一起服务资产,所以它的JavaScript依赖项现在由Yarn管理。这意味着需要安装并验证工程的Package.json
文件中列出的依赖项。
运行yansen install
安装这些依赖项:
1yarn install
接下来,运行您的数据库迁移:
1rails db:migrate
迁移完成后,您可以测试应用程序以确保其按预期工作。如果您在本地工作,请使用以下命令在本地捆绑包的上下文中启动服务器:
1bundle exec rails s
如果您使用的是开发服务器,则可以使用以下命令启动应用程序:
1bundle exec rails s --binding=your_server_ip
导航到本地主机:3000
或http://your_server_ip:3000
.您将看到以下登录页面:
要创建新鲨鱼,请点击获取鲨鱼信息 按钮,进入Sharks/index
路径:

要验证应用程序是否正常工作,我们可以向其添加一些演示信息。点击新鲨鱼 。由于该项目的身份验证settings.],系统将提示您输入用户名(** sammy** )和密码(** Shark**
在新鲨鱼 页面中,在** 姓名** 栏中输入Great White
,在** 事实** 栏中输入scary
:
点击创建鲨鱼 按钮来创建鲨鱼。当您看到您的Shark创建完成后,您可以使用CTRL+C
杀死服务器。
您现在已经为项目安装了必要的依赖项并测试了其功能。接下来,您可以对Rails应用程序进行一些更改,以处理濒危鲨鱼资源。
第二步-为濒危鲨鱼资源生成控制器
为了使用我们的濒危鲨鱼资源,我们将向应用程序添加一个新的模型和一个控制器,该控制器将控制如何将有关濒危鲨鱼的信息呈现给用户。我们的最终目标是让用户能够上传大量关于濒危鲨鱼的信息,而不会阻止我们应用程序的整体功能,并在他们不再需要这些信息时将其删除。
首先,让我们为濒临灭绝的鲨鱼建立一个)categories)的另一个字符串字段,以确定每条鲨鱼面临的风险程度。
最终,我们的模型结构将与我们将用于创建批量上传的CSV文件中的列相匹配。该文件位于db
目录下,您可以使用以下命令查看其内容:
1cat db/sharks.csv
该文件包含了73种濒危鲨鱼及其IUCN状态的清单--vu 为易危鲨鱼,** en** 为濒危鲨鱼,** cr** 为极度濒危鲨鱼。
我们的Enangered
模型将与该数据相关联,从而允许我们从该CSV文件创建新的Endangered
实例。使用以下命令创建模型:
1rails generate model Endangered name:string iucn:string
接下来,通过index
操作生成一个Enangered
控制器:
1rails generate controller endangered index
这将为我们构建应用程序的功能提供一个起点,尽管我们还需要向Rails为我们生成的控制器文件添加自定义方法。
立即打开该文件:
1nano app/controllers/endangered_controller.rb
Rails为我们提供了一个框架,我们可以开始填充它。
首先,我们需要确定使用数据所需的路径。多亏了生成控制器
命令,我们一开始就有了index
方法。这将与index
视图相关联,在该视图中,我们将为用户提供上传濒危鲨鱼的选项。
但是,我们也希望处理用户可能已经上传鲨鱼的情况;在这种情况下,他们不需要上传选项。我们需要以某种方式评估已经存在多少个Enangered
类的实例,因为不止一个实例指示已经进行了批量上传。
让我们从创建一个set_dangered``Private
方法开始,该方法将从数据库获取我们的Enangered
类的每个实例。将以下代码添加到文件中:
1[label ~/rails-sidekiq/app/controllers/endangered_controller.rb]
2class EndangeredController < ApplicationController
3 before_action :set_endangered, only: [:index, :data]
4
5 def index
6 end
7
8 private
9
10 def set_endangered
11 @endangered = Endangered.all
12 end
13
14end
请注意,BEFORE_ACTION
过滤器将确保仅为index
和data
路由设置@dangered
的值,这将是我们处理濒危鲨鱼数据的地方。
接下来,将以下代码添加到index
方法中,以确定用户访问应用程序这一部分的正确路径:
1[label ~/rails-sidekiq/app/controllers/endangered_controller.rb]
2class EndangeredController < ApplicationController
3 before_action :set_endangered, only: [:index, :data]
4
5 def index
6 if @endangered.length > 0
7 redirect_to endangered_data_path
8 else
9 render 'index'
10 end
11 end
12. . .
如果我们的Enangered
类的实例超过0个,我们会将用户重定向到data
路径,在那里他们可以查看自己创建的鲨鱼的信息。否则,他们将看到index
视图。
接下来,在index
方法下面添加一个data
方法,该方法将关联到一个data
视图:
1[label ~/rails-sidekiq/app/controllers/endangered_controller.rb]
2. . .
3 def index
4 if @endangered.length > 0
5 redirect_to endangered_data_path
6 else
7 render 'index'
8 end
9 end
10
11 def data
12 end
13. . .
接下来,我们将添加一个方法来处理数据上传本身。我们将此方法命名为pload
,它将调用一个Sidekiq Worker类和方法来从CSV文件上传数据。在下一步中,我们将为这个Worker类AddEnangeredWorker
创建定义。
现在,将以下代码添加到文件中以调用Sidekiq worker来执行上传:
1[label ~/rails-sidekiq/app/controllers/endangered_controller.rb]
2. . .
3 def data
4 end
5
6 def upload
7 csv_file = File.join Rails.root, 'db', 'sharks.csv'
8 AddEndangeredWorker.perform_async(csv_file)
9 redirect_to endangered_data_path, notice: 'Endangered sharks have been uploaded!'
10 end
11. . .
通过调用AddEnangeredWorker
类的Performance_async
方法,并使用CSV文件作为参数,该代码确保Shark数据和上传作业传递给Redis。我们将设置的Sidekiq工作器监视作业队列,并在出现新作业时做出响应。
在调用Performance_async
后,我们的upad
方法重定向到data
路径,用户可以在这里看到上传的Shark。
接下来,我们将添加一个delesty
方法来销毁数据。在pload
方法下面添加以下代码:
1[label ~/rails-sidekiq/app/controllers/endangered_controller.rb]
2. . .
3 def upload
4 csv_file = File.join Rails.root, 'db', 'sharks.csv'
5 AddEndangeredWorker.perform_async(csv_file)
6 redirect_to endangered_data_path, notice: 'Endangered sharks have been uploaded!'
7 end
8
9 def destroy
10 RemoveEndangeredWorker.perform_async
11 redirect_to root_path
12 end
13. . .
与我们的pload
方法一样,我们的delesty
方法包括对RemoveEnangeredWorker
类的Performance_async
调用--这是我们将创建的另一个Sidekiq工作线程。调用此方法后,它将用户重定向到根应用程序路径。
完成的文件将如下所示:
1[label ~/rails-sidekiq/app/controllers/endangered_controller.rb]
2class EndangeredController < ApplicationController
3 before_action :set_endangered, only: [:index, :data]
4
5 def index
6 if @endangered.length > 0
7 redirect_to endangered_data_path
8 else
9 render 'index'
10 end
11 end
12
13 def data
14 end
15
16 def upload
17 csv_file = File.join Rails.root, 'db', 'sharks.csv'
18 AddEndangeredWorker.perform_async(csv_file)
19 redirect_to endangered_data_path, notice: 'Endangered sharks have been uploaded!'
20 end
21
22 def destroy
23 RemoveEndangeredWorker.perform_async
24 redirect_to root_path
25 end
26
27 private
28
29 def set_endangered
30 @endangered = Endangered.all
31 end
32
33end
编辑完成后,保存并关闭文件。
作为巩固应用程序路由的最后一步,我们将修改config/routes.rb
中的代码,这是我们的路由声明所在的文件。
现在打开这个文件:
1nano config/routes.rb
该文件目前看起来如下所示:
1[label ~/rails-sidekiq/config/routes.rb]
2Rails.application.routes.draw do
3 get 'endangered/index'
4 get 'home/index'
5 resources :sharks do
6 resources :posts
7 end
8 root 'home#index'
9 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
10end
我们需要更新该文件,以包含我们在控制器中定义的路由:data
、pload
和delesty
。我们的data
路由将与检索Shark数据的GET请求相匹配,而我们的`上传‘和’销毁‘路由将映射到上传和销毁该数据的POST请求。
将以下代码添加到文件中以定义这些路由:
1[label ~/rails-sidekiq/config/routes.rb]
2Rails.application.routes.draw do
3 get 'endangered/index'
4 get 'endangered/data', to: 'endangered#data'
5 post 'endangered/upload', to: 'endangered#upload'
6 post 'endangered/destroy', to: 'endangered#destroy'
7 get 'home/index'
8 resources :sharks do
9 resources :posts
10 end
11 root 'home#index'
12 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
13end
编辑完成后,保存并关闭文件。
有了Endangered
模型和控制器,你现在可以继续定义你的Sidekiq worker类了。
第三步-定义Sidekiq工人
我们已经在控制器中对Sidekiq工作器调用了Performance_Async
方法,但我们仍然需要自己创建工作器。
首先,为worker创建一个worker
目录:
1mkdir app/workers
打开AddEnangeredWorker
工人的文件:
1nano app/workers/add_endangered_worker.rb
在该文件中,我们将添加允许我们使用CSV文件中的数据的代码。首先,将代码添加到将创建类的文件中,包括Ruby CSV library,,并确保此类作为Sidekiq工人运行:
1[label ~/rails-sidekiq/app/workers/add_endangered_worker.rb]
2class AddEndangeredWorker
3 require 'csv'
4 include Sidekiq::Worker
5 sidekiq_options retry: false
6
7end
我们还加入了retry:False
选项,以确保Sidekiq在失败的情况下不会重试上传。
接下来,添加Perform
函数的代码:
1[label ~/rails-sidekiq/app/workers/add_endangered_worker.rb]
2class AddEndangeredWorker
3 require 'csv'
4 include Sidekiq::Worker
5 sidekiq_options retry: false
6
7 def perform(csv_file)
8 CSV.foreach(csv_file, headers: true) do |shark|
9 Endangered.create(name: shark[0], iucn: shark[1])
10 end
11 end
12
13end
Performance‘方法从控制器中定义的
Performance_async方法接收参数,因此参数值对齐很重要。这里,我们传入了在控制器中定义的变量
csv_file,并使用CSV库中的
Foreach方法读取文件中的值。为该循环设置
Headers:true`可确保文件的第一行被视为一行Header。
然后,该块将文件中的值读入我们为Enangered
模型设置的列:name
和iucn
。运行此循环将为CSV文件中的每个条目创建Enangered
实例。
完成编辑后,保存并关闭该文件。
接下来,我们将创建一个Worker来处理此数据的删除。打开RemoveEnangeredWorker
类的文件:
1nano app/workers/remove_endangered_worker.rb
添加代码以定义类,并确保它使用CSV库并充当Sidekiq工作程序:
1[label ~/rails-sidekiq/app/workers/remove_endangered_worker.rb]
2class RemoveEndangeredWorker
3 include Sidekiq::Worker
4 sidekiq_options retry: false
5
6end
接下来,添加一个Performance
方法来处理濒危鲨鱼数据的销毁:
1[label ~/rails-sidekiq/app/workers/remove_endangered_worker.rb]
2class RemoveEndangeredWorker
3 include Sidekiq::Worker
4 sidekiq_options retry: false
5
6 def perform
7 Endangered.destroy_all
8 end
9
10end
perform
方法对Endangered
类调用destroy_all
,这将从数据库中删除该类的所有实例。
编辑完成后,保存并关闭文件。
在您的工作人员就位后,您可以继续为您的濒危
视图创建布局,并为您的index
和`data‘视图创建模板,以便用户可以上传和查看濒危鲨鱼。
第四步-添加布局和视图模板
为了让用户享受他们的濒危鲨鱼信息,我们需要解决两件事:在我们的Endenered
控制器中定义的视图的布局,以及index
和data
视图的视图模板。
目前,我们的应用程序使用了一个应用程序范围的布局,位于app/view/layout/Applation.html.erb
,一个导航部分,以及一个用于Sharks
视图的布局。应用程序布局检查内容块,这允许我们根据用户正在使用的应用程序部分加载不同的布局:对于home‘
index`页面,他们将看到一种布局,而对于与单个鲨鱼相关的任何视图,他们将看到另一种布局。
我们可以为我们的濒危
视图重新调整Sharks
布局的用途,因为这种格式也适用于批量显示Shark数据。
将Sharks
布局文件复制过来,创建一个dangered
布局:
1cp app/views/layouts/sharks.html.erb app/views/layouts/endangered.html.erb
接下来,我们将为index
和data
视图创建视图模板。
首先打开index
模板:
1nano app/views/endangered/index.html.erb
删除样板代码,添加以下代码,这将为用户提供一些有关濒危类别的一般信息,并为他们提供上传有关濒危鲨鱼的信息的选项:
1[label ~/rails-sidekiq/app/views/endangered/index.html.erb]
2<p id="notice"><%= notice %></p>
3
4<h1>Endangered Sharks</h1>
5
6<p>International Union for Conservation of Nature (ICUN) statuses: <b>vu:</b> Vulnerable, <b>en:</b> Endangered, <b>cr:</b> Critically Endangered </p>
7
8<br>
9
10 <%= form_tag endangered_upload_path do %>
11 <%= submit_tag "Import Endangered Sharks" %>
12 <% end %>
13
14 <br>
15
16<%= link_to 'New Shark', new_shark_path, :class => "btn btn-primary btn-sm" %> <%= link_to 'Home', home_index_path, :class => "btn btn-primary btn-sm" %>
form_tag
通过将POST操作指向我们为上传定义的路径dangered_pload_path
,从而使数据上传成为可能。通过Submit_tag
创建的提交按钮会提示用户导入濒危鲨鱼
。
除了这些代码,我们还包含了一些关于ICUN代码的一般信息,以便用户可以解释他们将看到的数据。
编辑完成后,保存并关闭文件。
接下来,打开data
视图的文件:
1nano app/views/endangered/data.html.erb
添加以下代码,该代码将添加一个包含濒危鲨鱼数据的表:
1[label ~/rails-sidekiq/app/views/endangered/data.html.erb]
2<p id="notice"><%= notice %></p>
3
4<h1>Endangered Sharks</h1>
5
6<p>International Union for Conservation of Nature (ICUN) statuses: <b>vu:</b> Vulnerable, <b>en:</b> Endangered, <b>cr:</b> Critically Endangered </p>
7
8<div class="table-responsive">
9<table class="table table-striped table-dark">
10 <thead>
11 <tr>
12 <th>Name</th>
13 <th>IUCN Status</th>
14 <th colspan="3"></th>
15 </tr>
16 </thead>
17
18 <tbody>
19 <% @endangered.each do |shark| %>
20 <tr>
21 <td><%= shark.name %></td>
22 <td><%= shark.iucn %></td>
23 </tr>
24 <% end %>
25 </tbody>
26</table>
27</div>
28
29<br>
30
31 <%= form_tag endangered_destroy_path do %>
32 <%= submit_tag "Delete Endangered Sharks" %>
33 <% end %>
34
35 <br>
36
37<%= link_to 'New Shark', new_shark_path, :class => "btn btn-primary btn-sm" %> <%= link_to 'Home', home_index_path, :class => "btn btn-primary btn-sm" %>
该代码再次包括ICUN状态代码,以及用于输出数据的自举表。通过循环我们的@dangered
变量,我们将每条鲨鱼的名称和ICUN状态输出到表中。
在该表的下方,我们有另一组form_tag
和mit_tag
,它们通过向用户提供删除濒危鲨鱼
的选项来发布到delesty
路径。
编辑完成后,保存并关闭文件。
我们将对视图进行的最后一次修改是在与home‘控制器关联的
index视图中。您可能还记得,该视图被设置为
config/routes.rb`中应用程序的根目录。
打开此文件进行编辑:
1nano app/views/home/index.html.erb
在Sharks are ancient
这一行中找到列:
1[label ~/rails-sidekiq/app/views/home/index.html.erb]
2. . .
3 <div class="col-lg-6">
4 <h3>Sharks are ancient</h3>
5 <p>There is evidence to suggest that sharks lived up to 400 million years ago.
6 </p>
7 </div>
8 </div>
9</div>
将以下代码添加到文件中:
1[label ~/rails-sidekiq/app/views/home/index.html.erb]
2. . .
3 <div class="col-lg-6">
4 <h3>Sharks are ancient and SOME are in danger</h3>
5 <p>There is evidence to suggest that sharks lived up to 400 million years ago. Without our help, some could disappear soon.</p>
6 <p><%= button_to 'Which Sharks Are in Danger?', endangered_index_path, :method => :get, :class => "btn btn-primary btn-sm"%>
7 </p>
8 </div>
9 </div>
10</div>
我们加入了一个行动号召,呼吁用户更多地了解濒临灭绝的鲨鱼,首先分享一条强有力的消息,然后添加一个Button_To‘帮助器,该帮助器将GET请求提交到我们的
dangeredindex
路线,允许用户访问应用程序的这一部分。从那里,他们将能够上传和查看濒危鲨鱼的信息。
编辑完成后,保存并关闭文件。
代码准备就绪后,您就可以启动应用程序并上传一些鲨鱼了!
Step 5 -启动Sidekiq并测试应用
在启动应用程序之前,我们需要在数据库上运行迁移并启动Sidekiq以支持我们的工作人员。Redis应该已经在服务器上运行,但我们可以检查以确定。所有这些都准备就绪后,我们将准备测试应用程序。
首先,检查Redis是否正在运行:
1systemctl status redis
您应该会看到如下所示的输出:
1[secondary_label Output]
2● redis-server.service - Advanced key-value store
3 Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
4 Active: active (running) since Tue 2019-11-12 20:37:13 UTC; 1 weeks 0 days ago
接下来,运行您的数据库迁移:
1rails db:migrate
现在,您可以在当前项目包的上下文中使用Bundle exec side kiq
命令启动Sidekiq:
1bundle exec sidekiq
您将看到如下输出,表明Sidekiq已准备好处理作业:
1[secondary_label Output]
2
3 m,
4 `$b
5 .ss, $$: .,d$
6 `$$P,d$P' .,md$P"'
7 ,$$$$$b/md$$$P^'
8 .d$$$$$$/$$$P'
9 $$^' `"/$$$' ____ _ _ _ _
10 $: ,$$: / ___|(_) __| | ___| | _(_) __ _
11 `b :$$ \___ \| |/ _` |/ _ \ |/ / |/ _` |
12 $$: ___) | | (_| | __/ <| | (_| |
13 $$ |____/|_|\__,_|\___|_|\_\_|\__, |
14 .d$$ |_|
15
162019-11-19T21:43:00.540Z pid=17621 tid=gpiqiesdl INFO: Running in ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
172019-11-19T21:43:00.540Z pid=17621 tid=gpiqiesdl INFO: See LICENSE and the LGPL-3.0 for licensing details.
182019-11-19T21:43:00.540Z pid=17621 tid=gpiqiesdl INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org
192019-11-19T21:43:00.540Z pid=17621 tid=gpiqiesdl INFO: Booting Sidekiq 6.0.3 with redis options {:id=>"Sidekiq-server-PID-17621", :url=>nil}
202019-11-19T21:43:00.543Z pid=17621 tid=gpiqiesdl INFO: Starting processing, hit Ctrl-C to stop
打开第二个终端窗口,导航到rails-sidekiq
目录,并启动应用程序服务器。
如果您在本地运行应用程序,请使用以下命令:
1[environment second]
2bundle exec rails s
如果您使用的是开发服务器,请运行以下命令:
1[environment second]
2bundle exec rails s --binding=your_server_ip
在浏览器中导航到本地主机:3000
或http://your_server_ip:3000
。您将看到以下登录页面:

点击哪些鲨鱼处于危险之中? 按钮。由于您尚未上传任何濒危鲨鱼,这将带您进入濒危``索引
视图:
点击 导入濒危鲨鱼 导入鲨鱼。您将看到一条状态消息,告诉您已导入鲨鱼:
您还将看到导入的开始。刷新页面以查看整个表格:
多亏了Sidekiq,我们成功地大批量上传了濒危鲨鱼,而没有锁定浏览器或干扰其他应用程序功能。
点击页面底部的 Home 按钮,返回应用程序主页面:

从这里,再次点击哪些鲨鱼处于危险之中? 。这将把你直接带到`data‘视图,因为你已经上传了鲨鱼。
要测试删除功能,请单击表格下方的 删除濒危鲨鱼 按钮。您将再次被重定向到主页应用程序页面。* 哪些鲨鱼处于危险之中?* 最后一次将带你回到index
视图,在那里你可以选择再次上传鲨鱼:
您的应用程序现在正在运行,Sidekiq worker已经准备好处理作业,并确保用户在使用您的应用程序时有良好的体验。
结论
现在,您有了一个启用了Sidekiq的工作Rails应用程序,它将允许您将昂贵的操作分流到由Sidekiq管理、由Redis支持的作业队列。这将允许您在开发过程中提高站点的速度和功能。
如果你想了解更多关于Sidekiq的信息,docs是一个很好的起点。
要了解有关Redis的更多信息,请查看我们的库redis resources.您还可以通过查看产品documentation.]了解有关在DigitalOcean上运行托管Redis集群的更多信息