內容提要
《深入理解Redis》以由淺入深、由原理到套用場景的方式介紹了Redis 這款NoSQL 資料庫產品。書中不僅細緻地講解了Redis 中的數據結構及流行的使用模式,還針對Redis 鍵的設計和管理,以及記憶體管理提出了建設性的方案。同時,作者深入Redis 源碼,將其內部構造通過原始碼調試的方式進行呈現。
《深入理解Redis》適合有一定NoSQL 經驗的開發者或者架構師閱讀。讀者可以從書中找到許多套用場景和解決方案,例如Docker 部署、Redis 訊息佇列、基於Redis 的ETL 套用和基於Redis 的機器學習等。
目錄
1 為何選擇Redis? 1
合適之選? 2
嘗試使用Redis 4
流行的使用模式 9
Redis 不合心意?馬上再試試! 11
總結 13
2 高級鍵管理與數據結構 14
Redis 鍵 14
--Redis 鍵模式 15
--鍵分隔設定和命名約定 17
手動創建Redis 模式 19
--解構Redis 對象映射器 22
--鍵過期 27
--鍵的注意事項 27
大O 符號 28
--為自定義代碼計算大O 符號 30
回顧Redis 數據結構的時間複雜度 32
--字元串 32
--哈希 33
--列表 34
--集合 35
有序集合 36
高級有序集合操作 39
位串和位操作 39
HyperLogLogs 41
總結 42
3 記憶體管理的建議與技巧 43
配置Redis 43
--主從 44
32 位Redis 44
--INFO memory 詳解 46
鍵過期 48
LRU 鍵清除策略 53
創建記憶體高效的Redis 數據結構 61
--小巧的哈希、列表、集合和有序集合 61
--把位、位元組和Redis 字元串用作隨機訪問數組 67
最佳化哈希,高效存儲 68
硬體和網路延遲 71
作業系統建議 73
總結 74
4 Redis 編程第一部分:Redis 核心、客戶端和程式語言 75
Redis 的內部結構 75
--理解redish 和redisc 82
--Redis 序列化協定92
--Redis RDB 格式 95
使用Redis 和Python 創建協程 98
--使用Nodejs 和Redis 實現Todo 列表套用 102
--複製與公共訪問 105
總結 105
5 Redis 編程第二部分:Lua 腳本、管理與DevOps 106
在Redis 中使用Lua 106
使用Redis 的KEYS 和ARGV 115
Redis 中的高級Lua 腳本 119
--MARC21 數據提取 119
--紙質文具線上商店 121
--讓JSON-LD、Lua 和Redis 協同工作124
Redis Lua 調試器 128
--Redis 的編程與管理 131
--主從複製 132
--使用MULTI 和EXEC 實現事務 134
Redis 在DevOps 中扮演的角色 137
總結 138
6 可伸縮性:Redis 集群和Sentinel 140
數據分區的方法 140
--範圍分區 141
--列表分區 143
--哈希分區 146
--複合分區 147
--鍵哈希標籤 148
使用Twemproxy 實現Redis 集群 149
--使用關聯數據片段伺服器測試Twemproxy 150
--Redis 集群的背景 156
--Redis 集群概覽 157
使用Redis 集群 158
--Redis 集群實時重新配置及重新分片 163
--故障轉移 166
--在Redis 集群中替換或者升級節點 168
使用Redis Sentinel 進行監控 169
--為區域代碼列表分區配置Redis Sentinel 171
總結 174
7 Redis 與互補的NoSQL 技術 175
NoSQL 技術的繁榮 175
Redis 作為MongoDB 的分析補充 179
Redis 作為ElasticSearch 的預處理組件 191
--在BIBCAT 中使用Redis 和ElasticSearch 191
--ElasticSearch、Logstash 和Redis 196
Redis 作為Fedora Commons 的智慧型快取補充 197
總結 203
8 Docker 容器與雲端部署 204
Linux 容器 204
與Redis 相關的Docker 基礎 209
Docker 鏡像中的層 217
--Docker 檔案系統後端 218
Docker 和Redis 的問題 225
使用Docker Compose 打包應用程式 225
Redis 和AWS 230
專門的雲託管選項 231
Redis Labs 232
--DigitalOcean Redis 232
總結 233
9 任務管理與訊息佇列 234
Redis 的發布/訂閱模式概述 234
--發布/訂閱RESP 回復 235
--SUBSCRIBE 和UNSUBSCRIBE RESP 數組 235
--PSUBSCRIBE 和UNSUBSCRIBE 數組 237
--使用redis-cli 進行發布/訂閱 238
Redis 發布訂閱實戰 240
--第一個工作站採用Python 進行發布訂閱 242
--第二個工作站採用Nodejs 進行發布訂閱 244
--第三個工作站使用Lua 客戶端進行發布訂閱 246
Redis 鍵空間通知 249
使用Redis 和Celery 進行任務管理 253
GIS 和RestMQ 257
使用RestMQ 進行任務管理 260
--使用Redis 技術進行訊息通信 262
使用Disque 進行訊息通信 262
總結 264
10 信息流的測量與管理 265
基於Redis 的ETL 方案 265
--將JSON 轉換成RESP 271
--管理Redis 時的安全考慮 277
--使用Redis Web 儀錶板進行運營監測 280
機器學習 281
--樸素貝葉斯與工作分類 282
--使用Redis 實現線性規劃 292
總結 296
附錄:來源 298