2013-10-01 76 views
0

假設我在特定的用戶請求期間執行特別昂貴的計算。好的一面是,這種計算可以提前完成,並推入一個普通的隊列中供人們從中拉出。使用Sidekiq保持結果緩存已滿

有沒有辦法在Ruby/Rails後端使用Sidekiq來將結果緩存保持在一定的水平?我將在哪裏存儲這個計算的結果?

例如

  1. 服務器負載,計算20套的成績,和緩存的地方。
  2. 根據用戶請求,彈出結果以允許即時服務器響應。
  3. 在後臺重新生成一組結果,以在隊列中填充多達20個結果。

顯然可能需要使用不同數量超過20取決於計算需要多長時間,以及用戶請求的速度,但我覺得你的想法。

回答

0

我很想知道什麼樣的計算實際上適合這個配置文件,但這並不重要。

由於您使用的是Sidekiq(或者想使用Sidekiq),這意味着您有一個Redis數據庫。 Redis數據庫是放置這類信息的好地方。

所以你可以在你的結果的Redis中創建一個LIST。在20個sidekiq作業的應用程序啓動激發期間創建您的計算。進行計算的工作人員可以將結果推送到Redis的列表中。

當您處理請求時,只需從列表中彈出一個結果並排隊另一個sidekiq作業以使自己成爲新的計算結果。

+0

哈哈 - 我不敢相信我沒有這樣想過。感謝那!這些計算只是基礎數據和數學模擬,可以爲每個用戶以通用的方式提取,然後從那裏建立起來。 – Brandon