2025-07-18 Redis 是什麼

2025-07-18 Redis 是什麼


🧠 Redis 是什麼?

Redis 是一種超快速的記憶體資料庫(In-memory Database),名字全稱是:

REmote DIctionary Server

它最早是為了解決「資料庫查詢太慢」的問題而誕生的。
一般的資料庫(像 Oracle、MySQL)把資料存放在硬碟上;
Redis 把資料放在記憶體裡(RAM),所以速度可以快上 數百倍以上


🚀 Redis 的主要用途

Redis 通常不會單獨使用,而是搭配主要的資料庫一起使用。
它最常見的用途有:

用途 說明
🔹 快取(Cache) 將常用資料暫存在記憶體中,減少資料庫查詢負擔。
例:熱門商品清單、使用者登入資訊、查詢結果。
🔹 Session 儲存 Web 系統可以把使用者登入狀態存在 Redis 裡。
🔹 即時排行榜 / 計數器 Redis 提供像 INCR(遞增)等指令,很適合做「點讚數、瀏覽次數」這類功能。
🔹 訊息佇列(Message Queue) 使用 ListStream 來暫存工作任務(像訂單通知、郵件發送)。
🔹 Pub/Sub(發佈 / 訂閱) 做即時通訊或通知系統。
🔹 快取訂單狀態 電商系統會先在 Redis 中保存訂單的暫時狀態,再寫入資料庫。

🧩 Redis 與傳統資料庫的差異

比較項目 Redis Oracle / MySQL 等傳統資料庫
資料存放位置 記憶體(RAM) 硬碟
存取速度 極快(微秒等級) 較慢(毫秒等級)
資料型態 鍵值對(Key-Value)結構 關聯式資料表
適合場景 快取、即時資料 長期保存資料
是否持久化 可選(支援快照或 AOF 持久化) 預設永久保存

🔑 Redis 的基本概念:Key-Value 資料結構

Redis 的每筆資料都是:

1
key → value

常見型態有:

型態 範例用途
String 簡單字串或數字,例如 user:1:name = "Lily"
Hash 類似物件,例如 user:1 = {name: "Lily", age: 20}
List 有序串列(像佇列),例如待處理訂單列表
Set 無序集合(不重複),例如使用者標籤
Sorted Set (ZSet) 排序集合,例如排行榜
Stream 用來處理訊息串流或事件記錄

🧰 Redis 範例指令(體驗感)

1
2
3
4
5
6
7
8
9
10
11
SET name "Lily"
GET name
# 回傳: "Lily"

INCR counter
# counter +1

LPUSH queue "task1"
LPUSH queue "task2"
LRANGE queue 0 -1
# 回傳 ["task2", "task1"]

🧱 Redis 在你的系統中扮演的角色(以你的專案為例)

你的 Web API-based 財會系統或 LINE 訂單系統中,Redis 可能會:

  1. 暫存使用者的購物車或登入狀態
  2. 快取常查詢的資料(例如產品清單或客戶資訊)
  3. 快速更新訂單狀態並通知使用者(例如 LINE bot 訊息)
  4. 作為暫時的訊息佇列,讓訂單處理流程更順暢

是否希望我幫你畫一張圖,說明 Redis 與 Oracle 在整個系統中的資料流關係
(例如使用者下訂單 → Redis → Oracle → LINE 通知)