Redis 完整教學 2026:從 Docker 安裝、7 大資料型態到 AI 向量搜尋與語意快取,地表最快記憶體資料庫實戰指南

Redis 是地表最流行的開源記憶體資料庫:以微秒級延遲提供快取、排行榜、佇列、Pub/Sub 與 Session 儲存,最新穩定版 8.10(2026 年 8 月更新)更把 JSON、全文搜尋、時間序列與 Vector Set 向量搜尋全部內建,並提供 AGPLv3 開源授權選項,還支援 LLM 語意快取(LangCache)。這篇 2026 年完整教學帶你從 Docker 安裝、資料型態總覽、快取/限流/Session 實戰,一路學到用 VADD/VSIM 做 AI 向量相似度搜尋,並比較 Redis 與 Valkey、Memcached 的選擇策略。

  • Dennis
  • 9 分鐘閱讀
Redis 完整教學 2026:從 Docker 安裝、7 大資料型態到 AI 向量搜尋與語意快取,地表最快記憶體資料庫實戰指南

Redis 是一套開源的記憶體(in-memory)鍵值資料庫:所有資料存在 RAM 中,讀寫延遲僅約微秒等級,最常用於快取、排行榜、佇列、Session 與即時計數等場景。最新穩定版 8.10.1(2026 年 8 月釋出)把過去要另外裝模組的 JSON、全文搜尋、時間序列、機率型資料結構與 Vector Set 向量搜尋全部內建,並新增 AGPLv3 開源授權選項與 LLM 語意快取(LangCache)——2026 年的 Redis 已從「快取神器」進化成一套 AI 應用也能直接使用的通用資料平台。

如果你在本站看過 SQLite 完整教學PostgreSQL 完整教學DuckDB 完整教學,會發現這四兄弟其實各司其職:SQLite 是嵌入式單機資料庫、PostgreSQL 是全能關聯式主力、DuckDB 專攻分析,而 Redis 的角色是「速度」——把最常被讀取的資料放進記憶體,讓你的 API 從幾十毫秒降到 1 毫秒以下。本文從零開始,帶你把 Redis 的原理與實戰一次學完。

先搞懂定位:Redis 跟其他資料庫哪裡不同?

特性RedisPostgreSQLSQLiteDuckDB
儲存位置記憶體(可持久化)磁碟磁碟/檔案磁碟/記憶體
讀寫延遲微秒級(<1ms)毫秒級毫秒級毫秒級(分析用)
資料模型鍵值 + 多種資料結構關聯式(SQL)關聯式(SQL)關聯式(SQL)
最佳用途快取、佇列、計數、排行榜主要業務資料庫單機應用、邊緣裝置大資料分析
持久化RDB/AOF 可選內建(WAL)內建內建

一句話記法:SQLite/PostgreSQL 負責「記得」,Redis 負責「快」。真正的系統通常是 PostgreSQL 當主力、Redis 擋在最前面當快取層。

安裝:Docker 一條指令搞定

不熟悉 Docker 可以先看本站的 Docker 完整教學 2026。2026 年官方映像檔只有一個 redis(Redis Stack 已正式退役),直接跑:

docker run -d --name my-redis -p 6379:6379 redis:8
# 驗證
docker exec -it my-redis redis-cli ping
# 回傳 PONG 即成功

用 Docker Compose 管理更乾淨(順便開持久化與密碼):

services:
  redis:
    image: redis:8
    container_name: my-redis
    ports:
      - "6379:6379"
    command: ["redis-server", "--requirepass", "你的強密碼", "--appendonly", "yes"]
    volumes:
      - redis-data:/data
    restart: unless-stopped

volumes:
  redis-data:

核心觀念:7 大資料型態一次看懂

Redis 最迷人之處,是用一組精心設計的資料結構解決不同問題——不是只會存字串:

型態特性常見情境指令範例
String字串/數值快取、計數器、Session tokenSET user:100 "Alice"GET user:100INCR page_views
Hash欄位-值對映物件、使用者資料、SessionHSET user:100 name "Alice" age 30HGET user:100 name
List雙向串列任務佇列、最新消息LPUSH queue job1RPOP queueLRANGE logs 0 9
Set無序不重複集合標籤、去重、共同好友SADD tags redis dbSISMEMBER tags redis
ZSet帶分數的有序集合排行榜、延遲佇列ZADD leaderboard 100 player1ZRANGE leaderboard 0 9 WITHSCORES
Stream追加式事件日誌事件串流、訊息佇列(進階)XADD events * type login user 42
JSON(Redis 8 內建)原生 JSON 文件巢狀結構、購物車JSON.SET cart:1 $ '{"items":[]}'JSON.GET cart:1 $.items

💡 Redis 8 新語法:HSETEX key field value EX 60 / HGETEXHash 的單一欄位也能獨立設 TTL,存 Session 超好用(以前只能整個 key 一起過期)。

三大必學實戰:快取、限流、排行榜

實戰 1:Cache-Aside 快取模式(後端標準配備)

快取最經典的「旁路(Cache-Aside)」流程:讀取時先查 Redis,沒命中才查資料庫並回填;更新時直接刪快取,讓下次讀取重新載入,避免髒資料。

sequenceDiagram
    participant App as 應用程式
    participant R as Redis
    participant DB as PostgreSQL
    App->>R: GET user:100
    alt 命中 (Cache Hit)
        R-->>App: 回傳快取資料
    else 未命中 (Cache Miss)
        R-->>App: nil
        App->>DB: SELECT * FROM users WHERE id=100
        DB-->>App: 回傳資料
        App->>R: SET user:100 資料 EX 300
        App-->>User: 回傳(含快取延遲節省)
    end
    Note over App,R: 更新時:DEL user:100(失效刪除)

Python + redis-py 只要幾行:

import redis
r = redis.Redis(host='localhost', port=6379, decode_responses=True)

def get_user(user_id: int):
    key = f"user:{user_id}"
    cached = r.get(key)
    if cached:
        return cached                     # 快取命中,直接回
    data = query_db(user_id)              # 未命中 → 查 PostgreSQL
    r.set(key, data, ex=300)              # 回填,5 分鐘後自動過期
    return data

實戰 2:API 限流(Rate Limiting)

分散式架構下,用 Redis 的 INCR + EXPIRE 做固定時間窗限流,比單機記憶體計數可靠得多:

INCR rate:api:使用者ID   # 請求數 +1
EXPIRE rate:api:使用者ID 60   # 60 秒後重置

超過門檻就回 HTTP 429。進階的滑動視窗、Token Bucket 也能用 Lua script 在 Redis 內原子執行——這是 nginx 以外的輕量替代方案,也是 GraphQL API 防爆量的標配。

實戰 3:排行榜與計數器

ZSet 天生就是排行榜:ZINCRBY leaderboard 10 player1 加積分,ZREVRANGE leaderboard 0 9 WITHSCORES 抓前十名;配合 INCR 做點讚數、觀看數,再把資料定期寫回 PostgreSQL 持久化——這是台灣電商與手遊後端的常見組合拳。

Redis 8.x:為什麼 2026 年值得重新認識它

Redis 8.0 於 2025 年 5 月正式 GA,是近年最大的一次架構升級,8.10.1(2026-08-17 釋出)是目前的穩定版。以下是四個關鍵改變:

  1. One Redis:模組全部內建。過去要另外裝的 RediSearch(搜尋)、RedisJSON、RedisTimeSeries、RedisBloom 全部併入核心,還多了五種機率型資料結構(Bloom Filter、Cuckoo Filter、Count-Min Sketch、Top-K、t-digest)。舊的 Redis Stack 發行版已於 2025 年 12 月停止維護,2026 年安裝只需 redis:8 一個映像檔
  2. Vector Set 向量集(原生向量搜尋):全新的資料型態,用 HNSW 圖做相似度搜尋,細節見下一節——這是 Redis 打進 AI 應用市場的關鍵武器。
  3. I/O Threading:多執行緒處理網路 I/O,搭配 pipeline 單節點吞吐量可達 Redis 7.2 的 5 倍以上(官方測試最高約 350 萬 ops/sec),Hash 與 ZSet 的記憶體占用也分別減少最高 16.7% 與 30.5%。
  4. 授權轉變:AGPLv3 回歸。Redis 從 8.0 起提供 RSALv2 / SSPLv1 / AGPLv3 三選一,其中 AGPLv3 是 OSI 認證的開源授權——2024 年授權爭議後,Redis 重新成為「可自由使用的開源軟體」(企業若需完全寬鬆授權則選 Valkey,見下文比較)。

8.6 之後還陸續加入 volatile-lrm / allkeys-lrm 淘汰策略(Least Recently Modified:只認寫入時間,很適合「會被一直讀取但很少更新」的 AI 快取)、HOTKEYS 熱點 key 診斷指令,以及 Stream 的冪等生產保證。

AI 時代應用:Redis 向量搜尋 + LLM 語意快取

用 Vector Set 做相似度搜尋

向量資料庫百家爭鳴,但如果你只是要「存幾萬筆 embedding、做相似度比對」,Redis 8 內建的 Vector Set 可能就夠了——不必再引進一整個新系統。用法很直覺:

# 1. 存入向量(VADD 會自動建立向量集;Q8 量化為預設)
VADD movies VALUES 3 0.5 1.2 0.75 "inception" SETATTR '{"year":2010,"genre":"scifi"}'
VADD movies VALUES 3 0.9 1.5 0.66 "interstellar" SETATTR '{"year":2014,"genre":"scifi"}'
VADD movies VALUES 3 0.4 1.9 0.92 "titanic" SETATTR '{"year":1997,"genre":"romance"}'

# 2. 查詢最相似的 3 筆(以既有元素為 query)
VSIM movies ELE "inception" WITHSCORES COUNT 3

# 3. 混合過濾:只找 2000 年後的相似電影
VSIM movies ELE "inception" WITHSCORES COUNT 3 FILTER '.year > 2000'

# 4. 維運指令
VCARD movies    # 元素總數
VINFO movies    # 向量集資訊(維度、量化方式)
VREM movies "titanic"

VSIM 也支援直接丟 query 向量(KNN):VSIM movies VALUES 3 0.5 1.2 0.75 ... WITHSCORES WITHATTRIBS COUNT 5。詳細語法可參考官方 Vector Sets 教學。RAG 應用的標準架構是:PostgreSQL + pgvector 存全部文件(詳見本站 PostgreSQL 教學的 pgvector 章節),Redis Vector Set 負責最熱門語料的極速檢索。

語意快取:讓 LLM 少燒一點錢

傳統快取要「問題一模一樣」才命中;**語意快取(Semantic Cache)**則是把問題轉成向量、找到「意思相近」的舊答案直接回傳,省下重複的 LLM API 呼叫。Redis 官方推出 LangCache 支援這個模式:

flowchart LR
    A[使用者提問] --> B{Redis LangCache<br/>向量相似度搜尋}
    B -->|相似度 ≥ 門檻<br/>例如 0.65| C[直接回傳歷史 LLM 答案<br/>0 成本 0 延遲]
    B -->|未命中| D[呼叫 LLM API<br/>產生新答案]
    D --> E[答案存入 LangCache]

LangCache 以環境變數控制,門檻範例為 LANGCACHE_CACHE_THRESHOLD=0.65(相似度超過 0.65 就視為同一問題),並用 Redis Hash 記錄命中/未命中統計。對客服機器人、RAG 問答這類「同樣的問題被問幾百遍」的場景,語意快取常能砍掉 30–60% 的 LLM 成本。想進一步省錢,也可以參考本站的 LLM 模型路由教學——路由管「該用哪個模型」,快取管「能不能根本不用模型」,兩者互補。

Redis vs Valkey vs Memcached:2026 年怎麼選?

2024 年的 Redis 授權風波催生了 Valkey 分支,2026 年兩邊都已站穩,選擇變得很實際:

比較Redis 8.10Valkey 9.xMemcached
授權AGPLv3 / RSALv2 / SSPLv1 三選一BSD-3-Clause(最寬鬆)BSD-3-Clause
維護者Redis Ltd.Linux 基金會 + 社群社群
進階型態JSON、Vector Set、TimeSeries、Bloom 全內建JSON/Search 為模組僅簡單鍵值
向量搜尋✅ 原生 Vector Set(8.0+)需模組(如 ValkeySearch)
語意快取✅ LangCache 官方支援社群方案
適合誰想用最新功能與完整 AI 生態授權政策「只能 BSD」的企業極簡純快取、不想學新東西

結論:一般開發者與新專案直接選 Redis 8 就對了——功能最完整、官方文件與工具(Redis Insight)最齊。只有在公司授權政策嚴格要求「零 copyleft」時才需要遷移到 Valkey;Memcached 則只剩「只需要 get/set 的極簡快取」這種場景值得考慮。

安全設定別偷懶:3 分鐘防爆

Redis 預設無密碼且綁定所有介面,直接暴露在公網 = 等著被加密勒索。上線前至少做到:

# redis.conf
bind 127.0.0.1          # 只綁本機(或用內網 IP)
protected-mode yes      # 保護模式(預設)
maxmemory 512mb         # 設記憶體上限
maxmemory-policy allkeys-lru   # AI 語意快取可改 allkeys-lrm
appendonly yes          # 開啟 AOF 持久化

多使用者情境改用 ACL 取代萬用密碼:

ACL SETUSER app on >強密碼 ~cache:* +@read +@write   # 只能存取 cache:* 的 key

總結

Redis 的學習曲線比 SQLite 平坦、比 PostgreSQL 短,投資報酬率卻極高:它是 2026 年幾乎所有大型 Web 服務的「第一道防線」,也是 AI 應用語意快取與向量檢索的輕量解。照著本篇走完 Docker 安裝 → 資料型態 → 快取/限流實戰 → Vector Set → 安全設定,你的 side project 或公司服務的效能與成本就已經贏過大半對手了。下一步想深入,官方文件(redis.io/docs)與 Redis 8.0 What’s New 是最佳起點。

延伸閱讀

資料來源

📬 訂閱 most.tw 電子報

每週精選 AI 工具教學與技術乾貨,直接送到你的信箱。免費、隨時可退訂。

💬 有問題想討論?加 LINE 聯絡我

歡迎透過 LINE 官方帳號直接留言,我會盡快回覆你的問題。

加入 LINE 好友