Table of Content
什麼是Redis
Redis 是一個開源、基於記憶體的高性能 key-value 資料庫。 Redis 最初被開發為一個用於緩存的工具,但隨著時間的推移,它已經演變成一個多用途的數據庫,用於處理各種不同的用例,包括緩存、會話存儲、消息佇列、實時分析等。
Redis 與其他 key-value 的緩存庫比較有三個特點
- Redis 支援資料的持久話,可以將記憶體的數據保存在硬體上,在重啟時可以再次 load 進來使用
Redis 將數據存在記憶體中,透過讀寫記憶體得到較高的併發性能。但若 Redis 意外關閉、重啟的話,數據將會丟失。 因此 Redis 提供兩種資料池久化的機制( RDB 和 AOF )
- Redis 不僅僅支援簡單得資料結構,還同時提供 set, zset, hash 等
- Redis 支援數據的備份(master-slave 模式)
包含 RDB, AOF 都是可以看作是 Redis 備份的機制
Redis的優勢
- 高性能: 讀: 110000 /s ,寫:81000 /s
- 提供多種資料結構
- 原子性:Redis 的所有操作都是具備原子性。 單個指令是原子性,多個指令也支援 transaction (通過 MULTI 和 EXEC 包起來)
- 支援豐富的功能: publish/subscribe, 通知, key 過期,等等
Redis 與其他 key-value 的資料庫有哪些不同
- 資料結構支援:Redis 不僅支援簡單的字符串類型,還支援複雜的資料結構,如哈希表、列表、集合等。這使得在存儲和處理資料時更加靈活,可以更好地符合不同應用場景的需求。
- 持久性:雖然 Redis 是一個基於記憶體的資料庫,但它具有持久性功能,可以將數據持久化到磁盤上,以防止數據丟失。
- 應用場景:Redis 不僅可以作為緩存使用,還可以用於會話存儲、消息佇列、實時分析等多種場景。它的多功能性使得開發者可以在同一個系統中解決多種不同的問題,減少了系統的複雜度和管理成本。
- 複製和集群支援:Redis 支援主從複製和集群模式,可以輕鬆地擴展到多台服務器,提高系統的可用性和擴展性。
Redis 高性能原理
- 讀寫內存
- 使用單線程:保證操作的原子性,減少線程上下文切換和競爭
- I/O 多路復用(mutiplexing)
- 高效的數據結構