本書涵蓋Redis資料類型的使用場景、各種類型的API的使用和底層資料結構源碼解析、在DevOps環境中使用Redis的綜合實踐、Redis主從架構、Redis Sentinel Redis、Redis集群環境搭建及其實現的高可用與高可擴原理等內容,提供深入淺出的實戰案例,旨在説明讀者深入瞭解Redis資料結構領域和日常運維Redis所碰到的常見問題解決方案。
本書適合Redis新手、所有對Redis感興趣的開發與運維人員閱讀和參考,同時還可作為高等院校相關專業的參考教程。
前言
第1章 大數據高併發離不開Redis 1
11 NoSQL發展歷程 1
12 初識Redis 3
13 Redis的魅力 3
14 喜歡Redis的理由 4
15 學習Redis的第一步 6
151 在Windows環境下安裝Redis 6
152 在Linux環境下安裝Redis 11
153 在Docker環境下安裝Redis 13
154 Redis介面化管理工具 17
16 redisconf文件的詳細說明 18
17 Redis基本操作 21
171 啟動Redis伺服器 21
172 遠端登入 21
173 切換數據庫 21
174 刪除鍵 22
175 刪除當前數據庫的所有鍵 22
第2章 Redis多種數據類型使用場景 23
21 String數據類型的API和使用場景 23
211 String數據類型的常規操作 23
212 結合應用場景演練 24
22 String也能做,為什麼還要用Hash 30
221 Hash數據類型的常規操作 31
222 結合應用場景演練 31
23 一種類型多種用法,原來List還可以這樣做 34
231 List類比數據結構 35
232 List常規操作 38
233 利用列表迅速提升網站首頁的併發量 38
24 開啟Set數據類型的正確操作姿勢 39
241 明星緋聞和微博癱瘓的那些事 39
242 抽獎邏輯 39
243 文章點贊或者投票 40
244 共同好友統計 41
25 微服務的限流操作和Zset的那些瓜葛 42
251 利用Zset實現限流 43
252 新聞排行榜場景實戰 47
253 直播打賞排名場景實戰 48
第3章 數據結構底層 50
31 String數據結構底層解析 51
311 String的三種編碼 51
312 SDS和記憶體重新分配 54
313 embstr編碼的內容追加 56
314 記憶體空間釋放 57
315 SDS特徵 58
32 Hash數據結構底層解析 58
321 ZipList數據結構 58
322 HashTable數據結構 66
323 ZipList和HashTable的抉擇 81
33 List數據結構底層解析 83
331 單向鏈表 83
332 雙向鏈表 84
333 Redis鏈表 84
334 快速列表 86
34 Set數據結構底層解析 91
341 整數集合 91
342 intset和HashTable的抉擇 94
35 Zset數據結構底層解析 95
351 跳躍表數據結構解析 95
352 ZipList和跳躍表的抉擇 99
第4章 數據持久化 101
41 RDB方式持久化 102
411 save觸發方式 103
412 bgsave觸發方式 103
413 後臺觸發 105
414 RDB備份的應用場景 107
42 AOF方式持久化 107
421 AOF持久化流程 108
422 相關參數配置 113
423 重寫操作 113
43 AOF和RDB的數據恢復順序 115
44 RDB和AOF持久化的優缺點 116
441 RDB持久化的優缺點 116
442 AOF持久化的優缺點 116
45 AOF+RDB混合模式配置 117
第5章 Redis的事務和Lua腳本操作 119
51 事務概述 119
52 事務使用 120
521 事務的三個階段 120
522 事務範例 120
53 事務性質 123
531 原子性 123
532 一致性 124
533 隔離性 124
534 持久性 124
535 安全性 125
54 Lua腳本 126
541 eval 126
542 Lua和Redis數據類型的轉換 128
543 腳本的原子性 130
544 錯誤處理 130
545 頻寬和evalsha 131
546 腳本緩存 131
547 script命令和純函數腳本 132
548 全域變數保護 133
549 內部腳本 133
5410 沙箱和最大執行時間 135
5411 Redis指令碼命令 136
5412 Lua腳本的好處 138
55 Lua實戰 138
第6章 pub/sub和Stream 142
61 頻道的訂閱與消息發送 142
62 發佈與訂閱的使用 143
63 發佈與訂閱的原理 145
64 訂閱模式 146
65 pub和sub使用範例 147
66 與其他發佈和訂閱比較 148
67 Stream概述 148
68 Stream實例 154
681 同組消費模式 154
682 不同組消費模式 155
683 消息確認 157
第7章 主從複製 158
71 主從複製概述 159
72 主從複製工作原理 159
721 連接建立階段 160
722 數據同步階段 164
723 命令傳播階段 181
724 身份驗證 183
725 延遲與不一致 184
73 Redis複製的注意事項 185
731 複製的注意事項 185
732 複製的安全性 185
733 無須磁片參與的複製 186
734 唯讀性質的從節點 186
735 主從多種模式下的問題 187
74 搭建主從節點的實例 189
741 以命令列方式搭建主從節點 189
742 以設定檔方式搭建主從節點 192
743 以身份驗證模式搭建主從架構 195
75 主從架構的“坑”和優化技巧 197
751 複製超時問題 197
752 主從架構數據應用問題 198
753 主從複製中斷問題 199
754 主從複製應用中的優化技巧 199