使用 Redis 实现的分布式工作流执行锁 - n8n 工作流

使用这个强大的 n8n 工作流模板,利用 Redis 作为分布式锁机制,防止关键工作流被同时执行。确保 n8n 自动化的可靠性和顺序性。

工作流预览

准备好自动化了吗?

下载此 n8n 工作流模板并立即开始使用。

适用人群

运行着对顺序执行有严格要求的、任务关键型的 n8n 计划工作流的用户。
需要在 n8n 模板中实现可靠并发控制的开发者。
希望使用 n8n 节点来实现健壮的执行监控和流程控制的 DevOps 工程师。
所有需要在多进程间管理共享状态的自托管 n8n 用户。

概览

对于像数据同步或处理财务批次这类不允许并行执行的任务来说,确保一次只有一个实例在运行至关重要。这个特定的 n8n 工作流通过使用 Redis 实现分布式锁,提供了一个可靠的解决方案。每次 n8n 触发器启动时,系统都会检查 Redis 中的一个专属状态标志位。如果标志位是 'idle'(空闲),则 n8n 工作流继续执行,将标志位设为 'running'(运行中),执行目标工作流,最后将标志位重置回 'idle'。如果标志位已经是 'running',则立即终止执行。这确保了顺序处理,使得这种模式成为使用 Redis n8n 节点管理的共享状态来实现高频率可靠的 n8n 自动化的必要技术。

工作原理


  1. 定时触发: 流程从 Schedule(定时器)n8n 触发器开始,配置为高频运行(例如,每 5 秒一次)。

  2. 检查 Redis 状态: Get Status(获取状态)Redis n8n 节点动态读取与此特定 n8n 工作流相关的当前锁状态 (workflowStatus_{{ $workflow.id }})。

  3. 键验证与存在性检查: 一个 If(条件)n8n 节点(Redis Key exists)首先确认 Redis 中是否存在该状态键。如果不存在,n8n 工作流则认为可以安全继续并设置锁。

  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. 将此 n8n 工作流的 JSON 代码导入到您的 n8n 实例中。

  2. Redis 凭据: 在您的 n8n 设置中配置一个 Redis 凭据。所有的 Redis n8n 节点(Get StatusSet RunningSet Idle)都必须使用此凭据。

  3. 配置目标工作流 ID: 找到 Execute Workflow(执行工作流)n8n 节点。您需要更新 Workflow ID(工作流 ID)参数,以匹配您要保护以防止并发执行的目标 n8n 工作流的 ID。

  4. 设置初始状态: 工作流中包含一个排错部分(当前已禁用)。在激活 Schedule(定时器)n8n 触发器之前,强烈建议先手动激活并运行 When clicking "Test workflow"(点击“测试工作流”时)-> Reset to Idle(重置为空闲)这一链条一次,以确保 Redis 键已初始化为 'idle' 且锁是空闲的。

  5. 激活: 保存并激活 Schedule(定时器)n8n 触发器,开始监控执行窗口。

节点详情

Schedule 触发器: 这个关键的 n8n 触发器按预定时间(例如每 5 秒)启动整个流程。触发频率可根据受保护 n8n 工作流的需求进行调整。
Redis 节点 (Get Status/获取状态): 从 Redis 读取动态状态键 (workflowStatus_{{ $workflow.id }})。此 n8n 节点对于检索当前锁状态至关重要。
If 节点 (Redis Key exists/Redis 键是否存在): 检查 Redis 状态变量是否已赋值。如果该键为空,n8n 工作流则假定是全新状态并继续设置运行锁。
Filter 节点 (Continue if Idle/仅在空闲时继续): 此 n8n 节点充当并发门禁,仅当状态键值严格匹配 "idle" 时才允许数据项通过。
Redis 节点 (Set Running / Set Idle/设为运行中 / 设为待命): 这两个 Redis n8n 节点负责管理分布式锁。Set Running 在执行前获取锁,而 Set IdleExecute Workflow n8n 节点完成后释放锁。
Execute Workflow (执行工作流): 核心动作 n8n 节点,用于调用并执行独立的、受保护的 n8n 工作流。在此处设置正确的 Workflow ID 是关键。


  • Sticky Note (便签) n8n 节点: 在整个模板中用于提供必要的上下文说明,特别是在设置间隔和进行手动重置状态标志(设为 'idle')等排错步骤方面。

相关 n8n 工作流

免费

节点: 8 节点
更新时间: 2025年12月26日
创建者

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

精选*