2013-10-01 3 views
0

Скажем, у меня очень дорогой расчет для выполнения во время конкретного пользовательского запроса. Плюсом является то, что этот расчет можно выполнить заблаговременно и нажать в общей очереди для людей, чтобы вытащить.Используйте Sidekiq, чтобы сохранить кеш результатов полностью

Есть ли способ использовать Sidekiq в бэкэнде Ruby/Rails, чтобы сохранить этот кеш результатов на определенном уровне? Где я буду хранить результаты этого расчета?

например.

  1. Нагрузка на сервер, вычислить 20 наборов результатов и кешировать где-нибудь.
  2. По запросу пользователя выведите результат, чтобы обеспечить немедленный ответ сервера.
  3. Восстановите один набор результатов в фоновом режиме, чтобы заполнить до 20 в очереди.

Очевидно, может потребоваться использовать другое число, не превышающее 20, в зависимости от того, сколько времени занимает вычисление, и скорости запросов пользователей, но я думаю, что вы поняли эту идею.

ответ

0

Мне любопытно узнать, какие вычисления действительно подходят для этого профиля, но это не очень важно.

Поскольку вы используете Sidekiq (или хотите использовать Sidekiq), это означает, что у вас есть база данных Redis. База данных Redis - отличное место для размещения такой информации.

Таким образом, вы можете просто создать СПИСОК в Redis своих результатов. Во время запуска приложения запускается 20 заданий sidekiq для создания ваших вычислений. Рабочий, выполняющий расчет, может вывести результат в список в Redis.

Как вы обрабатываете запросы, просто введите результат из списка и поставите в очередь другую работу sidekiq, чтобы сделать себе новый расчет.

+0

Ха-ха - Я не могу поверить, что я так не думал об этом. Спасибо за это! Расчеты - это всего лишь базовая статистика и математика для симуляций, которые могут быть извлечены обычным способом для каждого пользователя, а затем построены оттуда. – Brandon