深入理解Redis

深入理解Redis

《深入理解Redis》 一書原作者Jeremy Nelson(傑里米.尼爾森),中文版由汪佳南譯,電子工業出版社2017年4月出版

內容提要

《深入理解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

相關詞條

相關搜尋

熱門詞條

聯絡我們