1

假设我在特定用户请求期间要执行特别昂贵的计算。好处是可以提前执行此计算,并将其推入一般队列以供人们从中提取。

有没有办法Sidekiq在 Ruby/Rails 后端中使用来将结果缓存保持在一定水平?我将在哪里存储此计算的结果?

例如

  1. 在服务器负载上,计算 20 组结果,并缓存在某处。
  2. 根据用户请求,弹出结果以允许服务器立即响应。
  3. 在后台重新生成一组结果以填充队列中的最多 20 个结果。

显然,根据计算需要多长时间和用户请求的速率,可能需要使用不同于 20 的数字,但我想你明白了。

4

1 回答 1

0

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

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

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

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

于 2013-10-01T20:47:17.783 回答