Torihaji's Growth Diary

Little by little, no hurry.

Railsのredisとsidekiqの関係

はじめに

仮。構想まとまってから書いてみる。

現実世界の例を使って説明すると、理解しやすくなるかもしれませんね。レストランの注文システムを例に挙げてみましょう:

レストランの注文システム:

Redis = キッチンの注文票ボード Sidekiq = キッチンスタッフ(シェフやコック) ジョブ = 料理の注文

プロセスの流れ: a. 注文(ジョブ)が入る:

お客さんが注文を出す(アプリケーションがジョブを作成)

  1. 注文票がボードに貼られる:

ウェイターが注文票をキッチンのボードに貼る(ジョブがRedisに保存される)

  1. シェフが注文を処理:

シェフがボードから注文票を取り、料理を作り始める(Sidekiqワーカーがジョブを取得して処理)

  1. 複数の注文を同時に調理:

複数のコックが異なる注文を同時に調理(Sidekiqの並列処理)

  1. 優先順位:

VIP客の注文を先に処理(優先度の高いキュー)

  1. 失敗した場合:

料理が失敗したら、もう一度作り直す(ジョブの再試行)

特徴:

ボード(Redis)は常に最新の注文状況を表示 シェフ(Sidekiq)は効率的に注文をこなす 複数の種類の注文(異なるキュー)を管理できる

この例では、注文票ボード(Redis)が全ての情報を保持し、キッチンスタッフ(Sidekiq)がそれを見ながら効率的に仕事を進めています。注文(ジョブ)は常にボード上にあり、スタッフがそこから取り出して処理する形になっています。