這是Redis AI 挑戰賽:超越快取的提交內容。
MemMouse — 一個微型控制平面,用於在 Redis 之上管理專案 → 命名空間 → 服務 → 策略。它是一個深色、透明的 Next.js UI,可讓您:
建立專案和命名空間,設定配額/TTL/驅逐,凍結/解凍寫入。
透過關鍵模式、範圍和速率限制將服務綁定到命名空間。
頒發/輪換服務令牌,並為您的微服務下載可立即使用的代理配置。
查看專案概覽(容量、庫存、操作快照、頂級命名空間、最近事件)。
這是一個黑客馬拉松演示,但架構傾向於生產:Redis 是主要的元資料存儲,UI 被清楚地分為控制平面(Next.js API 路由)和資料平面(Redis)。
GitHub : https://github.com/simplizio/memmouse-next-ui
Docker 中心: docker pull simplizio/memmouse-next-ui:latest
使用 Docker Compose 執行:
# docker-compose.yml in repo
docker compose pull
docker compose up -d
# open http://localhost:3000/projects
# (optional) seed demo data:
# curl "http://localhost:3000/api/dev/seed?force=1&drop=1"
Redis 本身就像一張白紙。你可以儲存任何你想要的資料,但資料的組織完全由開發者決定。鍵前綴、存取策略、命名約定——一切都需要根據專案和團隊的具體情況進行調整。因此,你得到的只是一堆雜亂無章的資料,現有的監控工具幾乎無法有效管理。
我們建議將這些堆積如山的資料視為值得單獨服務的物件。在每個專案內部,資料被組織到給定大小的命名空間中,並為微服務提供明確定義的存取權限。
這項原則使得記憶體管理流程能夠大規模集中化。策略可以自動化並整合到企業環境中—無論是雲端環境還是自訂 DevOps 設定。
透過應用此工具,團隊可以真正控制和觀察整個系統。在微服務架構中,要實現這一點通常成本高且容易出錯。而採用我們的方法,生活變得輕鬆多了。
除了快取之外,我還使用 Redis 作為控制平面資料庫以及未來串流媒體/事件處理的基礎。具體來說:
- `mm:project:{id}`, `mm:namespace:{projectId}:{nsId}`, `mm:binding:{projectId}:{nsId}:{serviceId}`, `mm:service:{projectId}:{serviceId}`
- `mm:idx:projects` (project ids)
- `mm:idx:namespaces:{projectId}` (ns ids per project)
- `mm:idx:bindings:{projectId}:{nsId}` (service ids per ns)
- **Reverse index**: `mm:idx:bindings_by_service:{projectId}:{serviceId}` (ns ids per service)
原子性:更新在單一MULTI/EXEC
中同時觸及正向和反向索引。
吞吐量:讀取大量記錄時使用管道;管理掃描使用SCAN
。
持久性:示範在 Docker 中使用 AOF( appendonly yes
);可以切換到tmpfs
以實現超快速的開發執行。
mm:project:... -> JSON
mm:idx:projects -> Set(projectId)
mm:namespace:<projId>:<nsId> -> JSON
mm:idx:namespaces:<projId> -> Set(nsId)
mm:binding:<projId>:<nsId>:<svcId> -> JSON
mm:idx:bindings:<projId>:<nsId> -> Set(serviceId)
mm:idx:bindings_by_service:<projId>:<svcId> -> Set(nsId)
每個服務都有令牌,可以從以下位置取得我們簽署的配置(演示使用 Bearer 令牌檢查):
GET /api/projects/:projectId/services/:serviceId/config
Authorization: Bearer <token>
此配置包含 Redis 端點、綁定(模式、權限、作用域、速率限制)以及遙測目標。一個小型的 FastAPI 代理可以從此啟動,並在客戶端強制執行寫入模式,同時我們致力於伺服器端的強制執行。
簡單、富有表現力的原語(字串/集合)使得模式演變變得簡單。
透過清單和儀表板的管道快速扇出。
鋪路:
- **Streams** for CDC + replay/DLQ,
- **Pub/Sub** for live UI events,
- **ACL materialization** per binding (key patterns → Redis users),
- Backups via RDB/AOF snapshots per namespace.
團隊備註:單獨提交。
Dev.to 上的 @vsoldatov
原文出處:https://dev.to/vsoldatov/memmouse-enterprise-memory-management-m9o