Redis 五大核心資料類型詳解:String、Hash、List、Set、ZSet
Redis 作為高效能鍵值儲存系統,提供五種基礎資料結構,各具特色,適用於不同業務場景。本文系統整理其特性、底層實現與典型應用。
1. String(字串)
- 特性: 二進位安全,可儲存任意資料(文字、圖片、序列化物件)。
- 容量: 單值最大 512 MB。
- 底層: SDS (Simple Dynamic String),動態字串,O(1) 取得長度。
- 常用指令: SET, GET, INCR, DECR, MSET, MGET
- 應用場景: 快取物件、計數器、分散式鎖、Session 共享。
2. Hash(雜湊)
- 特性: Field-Value 鍵值對集合,類似 Java
Map<String, Object>。
- 優勢: 適合儲存物件,可單獨讀寫某個欄位,比序列化整個物件更節省頻寬與記憶體。
- 底層: 壓縮列表 或雜湊表。
- 常用指令: HSET, HGET, HMSET, HMGET, HGETALL, HDEL
- 應用場景: 使用者資料、商品資訊、購物車。
3. List(列表)
- 特性: 有序、可重複的字串列表,支援頭尾插入/彈出。
- 底層: 雙向鏈表 或快速列表。
- 常用指令: LPUSH, RPUSH, LPOP, RPOP, LRANGE, LLEN
- 應用場景: 訊息佇列、最新動態列表、分頁查詢。
4. Set(集合)
- 特性: 無序、唯一的字串集合。
- 底層: 雜湊表,查找/插入/刪除 O(1)。
- 常用指令: SADD, SREM, SMEMBERS, SISMEMBER, SINTER, SUNION, SDIFF
- 應用場景: 標籤系統、共同好友、抽獎去重、IP 去重統計。
5. ZSet - Sorted Set(有序集合)
- 特性: 每個成員關聯一個
double 分數,依分數排序,成員唯一但分數可重複。
- 底層: 跳躍表 + 雜湊表,支援 O(log N) 範圍查詢。
- 常用指令: ZADD, ZRANGE, ZREVRANGE, ZSCORE, ZRANK, ZINCRBY
- 應用場景: 排行榜、延遲佇列、按權重排序、熱門搜尋關鍵字。
選型建議
| 需求 | 推薦類型 |
| 簡單鍵值、計數 | String |
| 物件結構化儲存、部分更新 | Hash |
| 有序佇列、訊息流 | List |
| 去重、集合運算 | Set |
| 排序、排名、範圍查詢 | ZSet |
提示: 實際開發中常組合使用,例如用 Hash 儲存用戶詳情,用 ZSet 維護積分排行榜,用 Set 記錄簽到天數。