Academy Central
----
Weather

Redis 技術講義:核心概念與資料結構

本單元介紹 Redis 作為高效能鍵值儲存系統的核心設計:以**鍵值對(Key-Value pairs)**為基礎,**鍵(Key)**作為存取識別,**值(Value)**為實際儲存的內容。


一、Redis 的三種部署方案

Redis 提供三種部署選項,以因應開發、測試與企業生產需求:

  • Redis Community Edition(社群版):可安裝於本機,支援從原始碼編譯或以 Docker 容器執行,適合開發與測試環境。
  • Redis Cloud:全託管雲端資料庫服務(DBaaS),提供免費版(Free)、基礎版(Essentials)與專業版(Pro),支援自動故障轉移(Auto failover)與多區域部署。
  • Redis Software:企業級自管方案,可部署於地端或私有雲。

二、核心資料結構(Data Structures)

Redis 除支援簡單字串外,亦支援多種進階資料結構:

1. 字串(Strings)

  • 特性:最基礎的資料結構,為**二進位安全(binary safe)**的位元組序列。
  • 用途:除純文字與數值(可進行遞增/遞減運算)外,亦可儲存序列化 JSON、影像、影片或音訊檔案。
  • 常用指令SET 寫入、GET 讀取。

2. 列表(Lists)

  • 特性有序字串集合,允許重複元素。
  • 操作:支援自左端(Head)或右端(Tail)進行 PUSH(新增)與 POP(移除並回傳)。
  • 用途:實作佇列(Queue)、**堆疊(Stack)**或近期瀏覽紀錄等情境。

3. 集合(Sets)

  • 特性無序不重複的字串集合,自動去重。
  • 功能:支援集合運算,如聯集(Union)交集(Intersection)差集(Difference)
  • 用途:不重複訪客追蹤、資料去重。

4. 雜湊(Hashes)

  • 特性:欄位(Field)與值(Value)的對應集合,可視為單筆紀錄的鍵值對集合。
  • 用途:儲存**使用者工作階段(session data)**或物件紀錄(如產品資訊)。

5. 有序集合(Sorted Sets)

  • 特性:類似集合,但每個成員關聯一個分數(Score),依分數排序。
  • 用途排行榜(Leaderboards)、推薦引擎等依分數查詢的場景。

6. JSON

  • 特性:支援巢狀 JSON 文件儲存,並可透過 JSON Path 查詢或更新特定欄位,無須反序列化整個字串。
  • 優勢:支援強型別(如 Boolean、Numbers)。

三、進階與特殊資料結構

1. 機率型資料結構(Probabilistic Data Structures)

以適度犧牲精確度換取極低記憶體高吞吐

  • HyperLogLog:用於估計基數(Cardinality)(不重複項目數量),標準誤差約 0.81%。
  • Bloom Filter(布隆過濾器):用於成員存在性測試。回傳「否」表示一定不存在;回傳「是」表示可能存在(有誤報機率)。

2. 串流(Streams)

  • 特性:依時間順序記錄事件,每筆事件具唯一 ID。
  • 用途:作為**事件匯流排(Event Bus)**或使用者行為串流紀錄。

3. 地理空間索引(Geospatial)

  • 儲存成員經緯度,支援半徑查詢、距離計算與座標查詢。

4. 向量資料庫(Vector Database)

  • 將資料(如圖片、PDF)轉為向量(embeddings),支援語意搜尋(semantic search)、生成式 AI 與推薦系統。

四、關鍵功能與管理

1. 鍵值過期(Key Expiration)

  • 持久鍵(Persistent Keys):未設定 TTL,除非手動刪除否則持續存在。
  • 揮發鍵(Volatile Keys):設定存活時間(TTL),到期自動刪除,為實作**快取(Caching)**的基礎。

2. 鍵名規範與命名空間(Key Spaces)

  • 建議採用一致命名慣例,例如以冒號(:)分隔層級前綴,如 app:config:service

3. 管理工具:Redis Insight

  • **圖形化介面(GUI)**工具,用於視覺化資料、執行指令、分析效能瓶頸與管理資料結構。

五、主要應用場景(Use Cases)

  • 企業級快取(Caching):利用次毫秒級回應降低後端資料庫負載,加速網頁與 API 回應。
  • 搜尋與查詢(Search & Query):對 Hash、JSON 進行多維度查詢。
  • 工作階段管理(Session Management):提供低延遲的分散式 session 存取,確保使用者在多台伺服器間切換時狀態一致(如購物車)。
  • AI 與向量搜尋:儲存非結構化資料的向量表示,支援聊天機器人與推薦引擎。