Redisを利用したワークフロー実行の分散ロック - n8n ワークフロー

n8nの重要なワークフローが同時に実行されるのを防ぐため、Redisを分散ロッキング機構として活用する強力なn8nワークフローテンプレートです。信頼性の高い順次自動化を実現します。

ワークフロープレビュー

自動化の準備はいいですか?

このn8nワークフローテンプレートをダウンロードして、今すぐ使い始めましょう。

こんな方におすすめ

順次実行が必須の、ミッションクリティカルなスケジュール済みn8nワークフローを実行しているユーザー
n8nテンプレート内で信頼性の高い並行処理制御を必要とする開発者
n8nノードを使用して堅牢な実行監視とフロー制御を実装したいDevOpsエンジニア
プロセス間で共有状態の管理を必要とするn8nのセルフホストユーザー

概要

データ同期や財務バッチ処理など、並列実行が許されないミッションクリティカルなプロセスを扱う場合、ジョブのインスタンスが一度に1つだけ実行されることを保証することが極めて重要です。この特定のn8nワークフローは、Redisを用いた分散ロックを実装することで堅牢なソリューションを提供します。n8nトリガーが発火するたびに、システムはRedis内の専用ステータスフラグを確認します。フラグが「idle (アイドル)」の場合、n8nワークフローは続行し、フラグを「running (実行中)」に設定して対象のワークフローを実行し、最後にフラグを「idle」にリセットします。もしフラグがすでに「running」であれば、実行は即座に終了されます。これにより順次処理が保証され、Redis n8nノードによって管理される共有状態を利用した、高頻度なn8n自動化における信頼性のための必須テクニックとなります。

仕組み


  1. スケジュールされた起動: このプロセスは、高い頻度(例:5秒ごと)で実行されるように設定されたスケジュールn8nトリガーから開始されます。

  2. Redisステータスの確認: ステータス取得 (Get Status) Redis n8nノードは、この特定n8nワークフローに関連付けられた現在のロックステータス (workflowStatus_{{ $workflow.id }}) を動的に取得します。

  3. キーの検証と存在確認: If n8nノード (Redisキーの存在) は、まずRedis内にステータスキーが存在するかどうかを確認します。キーが存在しない場合、ワークフローは安全に進められるとみなし、ロックを設定します。

  4. 並行処理ゲート: アイドル時のみ続行 (Continue if Idle) というフィルターn8nノードが中核となる並行処理チェックを実行し、取得したステータス値が厳密に「idle」である場合にのみn8nワークフローの続行を許可します。ステータスが「running」の場合、ここで実行は停止し、同時実行を防ぎます。

  5. 実行中ロックの設定: 実行が許可された場合、実行中 (Set Running) Redis n8nノードがRedisキーを「running」に更新し、分散ロックを確立します。

  6. メインワークフローの実行: ワークフローの実行 (Execute Workflow) n8nノードが、指定されたIDを使用して対象のクリティカルなn8nワークフローを呼び出し実行します。このn8nノードは、サブワークフローが失敗した場合でも次のステップへ常に続行するように設定されています。

  7. アイドルロックの解放: 最後に、アイドル設定 (Set Idle) Redis n8nノードがステータスキーを「idle」に戻すことでロックを解放し、システムが次のスケジュールされたn8nトリガーの準備が整います。これにより、n8nワークフローの1回の正常な実行サイクルが完了します。

インストールガイド


  1. このn8nワークフローJSONコードをあなたのn8nインスタンスにインポートします。

  2. Redis認証情報: あなたのn8n設定内でRedis認証情報を設定します。すべてのRedis n8nノード (ステータス取得実行中設定アイドル設定) はこの認証情報を使用する必要があります。

  3. 対象ワークフローIDの設定: ワークフローの実行 (Execute Workflow) n8nノードを見つけます。並列実行から保護したいクリティカルなn8nワークフローのIDと一致するように、Workflow ID パラメータを更新する必要があります。

  4. 初期状態の設定: このワークフローにはトラブルシューティングセクション(現在は無効化されています)が含まれています。スケジュールn8nトリガーを有効化する前に、Redisキーが「idle」に初期化され、ロックが解放されていることを確認するために、一度手動で "Test workflow" をクリックしたとき -> アイドルにリセット のチェーンをアクティブにして実行することを強く推奨します。

  5. 有効化: 保存してスケジュールn8nトリガーを有効化し、実行ウィンドウの監視を開始します。

ノード詳細

スケジュールトリガー: この必須のn8nトリガーは、時間指定(例:5秒ごと)でプロセス全体を開始します。頻度は、保護対象のn8nワークフローの要件に基づいて調整可能です。
Redisノード (ステータス取得): Redisから動的なステータスキー (workflowStatus_{{ $workflow.id }}) を読み取ります。このn8nノードは、現在のロック状態を取得するために不可欠です。
Ifノード (Redisキーの存在確認): Redisステータス変数が設定されているかを確認します。キーが空の場合、n8nワークフローはまっさらな状態とみなし、実行中ロックの設定に進みます。
フィルターノード (アイドル時のみ続行): このn8nノードは並行処理ゲートとして機能し、ステータスキーの値が厳密に"idle"と一致する場合にのみデータアイテムを通過させます。
Redisノード (実行中設定 / アイドル設定): これら2つのRedis n8nノードが分散ロックを管理します。実行中設定 (Set Running) は実行前にロックを取得し、ワークフローの実行 (Execute Workflow) n8nノードが完了した後にアイドル設定 (Set Idle) がロックを解放します。
ワークフローの実行: 別の保護対象のn8nワークフローを呼び出し実行する、中核となるアクションn8nノードです。ここで正しいワークフローIDを設定することが極めて重要です。


  • Sticky Note n8nノード: テンプレート全体で使用され、特に間隔の設定や、ステータスフラグを手動で「idle」にリセットするなどのトラブルシューティング手順に関して、必要なコンテキストを提供します。

関連するn8nワークフロー

無料

ノード: 8 ノード
更新済み: 12月 26 2025
すべて表示
作成者

Workflow Optimization Expert | Software Architect. Use my link to book an initial consultation for custom built workflows using n8n.

特徴*