認識 Redis:高性能鍵值存儲的瑞士軍刀
Redis (REmote DIctionary Server) 是一款開源、基於內存、支援豐富資料結構的 NoSQL 資料庫。作為構建高併發、低延遲 Web 應用的核心組件,它已成為現代後端架構的標配。本文整理自易百教程與 Redis 官方文檔,梳理其核心特性與優勢。
三大核心特性
- 全內存運算,磁盤僅用於持久化:讀寫微秒級延遲,支援 RDB 快照與 AOF 日誌兩種持久化策略,平衡性能與資料安全。
- 豐富的資料結構:超越簡單 Key-Value,原生支援 String、Hash、List、Set、Sorted Set、Bitmap、HyperLogLog、Geospatial、Stream 等,直接映射業務模型,減少應用層序列化開銷。
- 主從複製與高可用:單主多從非同步複製,支援 Sentinel 哨兵自動故障轉移與 Cluster 分片集群,實現讀寫分離、水平擴展與高可用(類比 MySQL 主從但更輕量)。
四大核心優勢
- 極致速度:單實例 QPS 可達 10 萬+,得益於純內存操作、單線程無鎖設計、I/O 多路複用 (epoll/kqueue) 與高效的資料結構實現 (SDS, Skiplist, Dict 等)。
- 原子性操作:單指令原子執行,支援 Lua 腳本批量原子化,天然解決併發競態,無需應用層分佈式鎖即可實現計數器、分佈式鎖、限流器等模式。
- 多模型工具箱:緩存、會話存儲、消息隊列 (Pub/Sub、Stream)、排行榜 (Sorted Set)、位圖統計、地理位置 (GEO)、速率限制……一個 Redis 解決十類問題。
- 生態成熟:各語言客戶端完善,Kubernetes Operator、Redis Stack (Search/JSON/Graph) 拓展邊界。
典型應用場景速覽
| 場景 | 資料結構 | 關鍵指令 |
| 熱點資料緩存 | String / Hash | GET/SET, HGETALL |
| 會話共享 | String (TTL) | SETEX, EXPIRE |
| 實時排行榜 | Sorted Set | ZADD, ZRANGE, ZINCRBY |
| 消息廣播/隊列 | Pub/Sub / Stream | PUBLISH/SUBSCRIBE, XADD/XREAD |
| 分佈式鎖 | String (NX+EX) | SET key val NX EX 10 |
| 用戶簽到/活躍度 | Bitmap | SETBIT, BITCOUNT, BITPOS |
學習路徑建議
- 掌握 5 大基礎類型 API 與 TTL 管理。
- 理解持久化 (RDB/AOF) 權衡與混合持久化配置。
- 實戰主從複製、Sentinel 故障轉移、Cluster 槽位分佈。
- 深入單線程事件循環、內存淘汰策略 (LRU/LFU)、大 Key 問題排查。
- 探索 Lua 腳本、Pipeline、事務 (MULTI/EXEC) 進階模式。
Redis 不只是「快的 Memcached」,更是靈活的資料結構伺服器。吃透其內核設計與最佳實踐,將為系統架構賦能增效。