什么是Redis?? ? ? ??
????????Redis(Remote Dictionary Server)是一種開源的、高性能的、基于內存快速讀寫的的數據結構存儲系統,常用于緩存,分布式鎖等場景;
Redis常用數據類型有哪些?
- String(字符串)
- 適用場景:適合存儲簡單的鍵值對,如配置信息、計數器、緩存數據等。
- ?相當于一個鍵值對,其中值是一個簡單的字符串或數字。
- 示例數據:
-
{'temperature': '25.5'}
- Hash(哈希)
- 適用場景:存儲具有多個字段的對象,如用戶資料、產品詳情等,每個對象可以用一個哈希來表示,字段和值都可以是字符串。
- 類似于Map或字典,其中鍵是字段名,值是字段的值。
- 示例數據:
-
{'user:1': {'name': 'John Doe', 'email': 'john.doe@example.com', 'age': 30}}
- List(列表)
- 適用場景:實現消息隊列、最近瀏覽歷史、排行榜等,列表支持從頭部和尾部進行插入和彈出操作。
- 類似于數組或列表,其中所有元素都是字符串。
- 示例數據:
-
['message1', 'message2', 'message3']
- Set(集合)
- 適用場景:存儲不重復的元素集合,如用戶好友列表、興趣標簽集合等。
- 類似于集合,其中所有元素都是唯一的字符串。
- 示例數據:
-
{'item1', 'item2', 'item3'}
- Sorted Set(有序集合)
- 適用場景:當需要在集合的基礎上添加排序功能時,如熱門文章、用戶積分榜、在線用戶按活躍度排序等。
- 類似于集合,但每個元素都有一個相關聯的分數,用于排序。
- 示例數據:
-
{'item1': 10, 'item2': 20, 'item3': 15}
- Bitmaps(位圖)
- 適用場景:用于存儲大量的二進制數據,如用戶行為記錄、網頁爬蟲的URL去重等,特別適合大數據量下的快速讀寫和節省內存。
- 位圖是二進制位的數組,每個位代表一個布爾值。
- 示例數據:
-
[0, 1, 0, 1, 1, 0, 0, 1]
- HyperLogLog(基數統計)? ??
- 適用場景:估算大量數據中的不同元素數量,如網站獨立訪客數、廣告點擊去重等,它利用概率算法提供高效率的近似計算。
- HyperLogLog是一種概率數據結構,用于估計集合中不同元素的數量。
- 示例數據:
-
{'estimated_cardinality': 12345}
- GEO(地理信息)
- 適用場景:
- 存儲地理坐標和相關的位置信息。
- 示例數據:
-
{'location:1': {'latitude': 40.7128, 'longitude': -74.0060}, 'location:2': {'latitude': 37.7749, 'longitude': -122.4194}}
- Stream(流)
- 適用場景:處理實時日志、事件流、消息隊列等,流支持自動修剪和分片,非常適合構建微服務間的通信和事件驅動架構。
- 流是有序的、可追加的日志條目集合。
- 示例數據:
-
[ 3 ('15987654321', {'event': 'login'}), 4 ('15987654322', {'event': 'purchase', 'item': 'book'}), 5 ('15987654323', {'event': 'logout'}) 6]
Redis的其它系列功能
- 持久化(Persistence)
- 功能說明:Redis 支持兩種持久化機制:RDB 快照和 AOF(Append Only File)。RDB 會在特定的時間點創建整個數據庫的快照,而 AOF 則記錄每次寫操作,可以恢復到最后一次寫入的狀態。
- 用途:數據安全性和恢復,確保數據不會因為服務器重啟而丟失
- 主從復制(Master-Slave Replication)
- 功能說明:Redis 主從復制允許數據從一個主服務器復制到一個或多個從服務器,從服務器可以處理讀取請求,減輕主服務器的壓力。
- 用途:讀寫分離,提高系統的可擴展性和容錯性。
- 哨兵(Sentinel)
- 功能說明:哨兵是一個分布式系統,用于監控主從服務器的狀態,當主服務器不可用時,可以自動完成故障轉移,選擇一個新的主服務器。
- 用途:高可用性,自動故障檢測和恢復。
- 事務(Transactions)
- ????功能說明:Redis 允許將一系列的命令打包成一個事務,事務中的命令會順序執行,但并不保證原子性,事務中的命令在提交前不會被其他客戶端看到。
- 用途:保證一組操作的順序執行,盡管不提供完整的 ACID 特性,但有助于實現更復雜的應用邏輯。
- 發布與訂閱(Pub/Sub)
- 功能說明:Redis 提供了發布/訂閱模型,客戶端可以訂閱頻道,其他客戶端可以向頻道發布消息,訂閱者會收到所有發布的消息。
- 用途:構建消息隊列、事件通知系統、聊天室等功能。
- Lua腳本(Scriptiing)
- 功能說明:Redis 支持使用 Lua 腳本來執行復雜操作,腳本可以在服務器端執行,減少網絡延遲。
- 用途:實現更復雜的業務邏輯,避免多次往返調用,提高性能。
- 模塊(Modules)
- 功能說明:Redis 支持加載外部編寫的模塊,以擴展其功能,模塊可以提供新的數據類型和命令。
- 用途:通過模塊可以實現如搜索、圖數據庫、時間序列分析等功能。
- 慢查詢日志(Slow Log)
- 功能說明:慢查詢日志可以記錄執行時間過長的命令,這對于性能調優和診斷問題非常有幫助。
- 用途:性能監控,優化查詢效率。
- 監視器(Monitor)
- 功能說明:監視器模式可以實時打印出 Redis 服務器接收到的所有命令,對于調試和監控非常有用。
- 用途:實時監控服務器上的操作,便于調試和分析。