使用Sidekiq保持结果缓存完整

时间:2013-10-01 20:06:45

标签: ruby-on-rails ruby backgroundworker sidekiq

假设我在特定用户请求期间执行特别昂贵的计算。好的一面是,这个计算可以提前执行,并推送到一般队列中供人们使用。

有没有办法在Ruby / Rails后端使用Sidekiq来保持结果缓存满一定程度?我在哪里存储这个计算的结果?

e.g。

  1. 在服务器负载上,计算20组结果,并在某处缓存。
  2. 根据用户请求,弹出结果以允许立即响应服务器。
  3. 在后台重新生成一组结果,以在队列中填充最多20个。
  4. 显然可能需要使用不同于20的数字,具体取决于计算所需的时间和用户请求的速率,但我认为你明白这一点。

1 个答案:

答案 0 :(得分:0)

我很想知道什么样的计算实际适合这个配置文件,但这并不重要。

由于您使用的是Sidekiq(或想使用Sidekiq),这意味着您拥有Redis数据库。 Redis数据库是放置此类信息的好地方。

因此,您可以在Redis中创建结果的LIST。在应用程序启动期间激活20个sidekiq作业以创建计算。进行计算的工作人员可以将结果推送到Redis中的列表中。

在处理请求时,只需从列表中弹出结果并排队另一个sidekiq作业,以便自己进行新的计算。