2025-07-15 Line 訂單系統-D 階段 — Redis 快取與訂單狀態通知設計與實作
2025-07-15 Line 訂單系統-D 階段 — Redis 快取與訂單狀態通知設計與實作
現在正式進入:
📒 D 階段 — Redis 快取與訂單狀態通知設計與實作
這是整個 LINE 訂單系統的「智慧化」階段,
讓你的系統不僅能收單,還能即時更新訂單狀態、減少資料庫負擔、推播通知使用者。
🧭 D 階段目標總覽
| 目標 | 功能說明 |
|---|---|
| ⚡ 引入 Redis | 作為訂單快取,減少頻繁的 MySQL 查詢 |
| 🔔 即時通知機制 | 當訂單狀態改變時(例如「已接單」、「配送中」),LINE 即時通知使用者 |
| 🧩 API 整合 | 提供 /api/orders/:id/status 更新訂單狀態的後端端點 |
| 🖥️ Vue3 後台 | 管理者可在後台點擊按鈕更新狀態(並觸發推播) |
⚙️ 系統架構概念圖(D 階段)
1 | LINE 使用者 |
- Redis:快速暫存訂單狀態,避免重查 MySQL。
- MySQL:正式持久儲存。
- Vue 後台更新狀態 → Redis + MySQL 更新 → LINE 即時通知。
🧱 實作步驟
🔹 D1 — 安裝 Redis 與設定連線
✅ 在本機或雲端安裝 Redis
在 Lenovo(Windows) 或 Mac Air 上都可用 Docker:
1 | docker run --name redis -p 6379:6379 -d redis |
✅ 安裝 Node.js 套件
在你的 backend 專案中:
1 | npm install redis |
✅ 新增 .env 變數
1 | REDIS_HOST=127.0.0.1 |
🔹 D2 — 建立 Redis 連線工具
📁 backend/utils/redisClient.js
1 | import { createClient } from "redis"; |
🔹 D3 — 修改 orders.js 支援 Redis 快取
當查詢訂單列表時,會先查 Redis,沒有才查 MySQL。
更新訂單時,Redis 與 MySQL 會同步更新。
📁 backend/routes/orders.js(更新後版本):
1 | import express from "express"; |
🔹 D4 — Vue3 後台按鈕觸發更新
📁 frontend/src/views/LineOrders.vue(部分新增內容):
1 | <td> |
1 | const updateStatus = async (order) => { |
🧪 測試流程
| 步驟 | 動作 | 結果 |
|---|---|---|
| 1️⃣ | 啟動 Redis + Node.js | Redis 客戶端連線成功 |
| 2️⃣ | Vue3 後台載入訂單清單 | 第一次從 MySQL 查詢,之後從 Redis 快取 |
| 3️⃣ | 改變訂單狀態(例如改為「已接單」) | Redis 清快取、MySQL 更新、LINE 推播通知 |
| 4️⃣ | 回到 LINE App 檢查訊息 | 收到「您的訂單已更新」通知 ✅ |
✅ D 階段完成成果
| 模組 | 狀態 |
|---|---|
| Redis 快取導入 | ✅ 已完成 |
| 訂單狀態即時更新 | ✅ 已完成 |
| LINE 推播通知 | ✅ 已完成 |
| 前端管理介面 | ✅ 已整合 |
🚀 下一步(📕 E 階段預告)
接下來的 E 階段 將會進入:
「前端介面優化(RWD + UI/UX)」
內容包括:
- 美化
LineOrders.vue(RWD、自動更新、進度條) - 新增「即時刷新」或「Socket 實時訂單」
- 強化前端的「使用者體驗」
是否要我接下來幫你進入 📕 E 階段 — Vue3 前端優化(RWD+UI/UX 改版與即時刷新設計)?