Skip to content

feat: Redis Lock 跨平台相容性與管理議題 #663

@jlin53882

Description

@jlin53882

背景

PR #662 實現了 Redis distributed lock 用於解決高並發寫入的 lock contention 問題。

相關連結

Redis Lock 使用情境

用戶類型 需要的 lock 需要 Redis?
單一 Agent 原本的 file lock 就夠了 ❌ 不需要
多個 Agent 同時寫入 需要分散式 lock ✅ 需要

跨平台相容性

平台 Redis 安裝方式
Windows MSI 安裝(MSOpenTech 版本)
Mac brew install redis
Linux apt/yum/dnf

雲端選項(免自管)

  • Redis Cloud(免費方案)
  • Upstash
  • Redis Enterprise Cloud

設計考量

目前實作(Graceful Fallback)

優先嘗試 Redis lock,Redis 不可用時,回傳 no-op lock(程式照常跑)。

情境 行為 優點 缺點
有 Redis 用 Redis lock 真正解決高並發 需要安裝
無 Redis no-op lock 不阻塞程式 失去 lock 保護

替代方案:Failover 到 File Lock

Redis 不可用時,用原本的 file lock,保有 lock 保護,只是效能較差。

建議

  1. 單一 Agent 用戶:不需要 Redis,原本就能用
  2. 多個 Agent 同時寫入:需要 Redis(本地或雲端)
  3. 文件說明:需要清楚說明什麼情況需要 Redis

待確認

  • 是否要改成 failover 到 file lock(保有正確性)?
  • 文件是否要說明使用情境?
  • 要記錄到 README 嗎?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions