大數據高並發 Redis 一本通

張文亮

  • 出版商: 機械工業
  • 出版日期: 2021-11-10
  • 售價: $594
  • 貴賓價: 9.5$564
  • 語言: 簡體中文
  • 頁數: 370
  • 裝訂: 平裝
  • ISBN: 7111692195
  • ISBN-13: 9787111692195
  • 相關分類: Key-Value Store大數據 Big-data
  • 立即出貨 (庫存 < 4)

買這商品的人也買了...

商品描述

本書涵蓋Redis數據類型的使用場景、各種類型的API的使用和底層數據結構源碼解析、
在DevOps環境中使用Redis的綜合實踐、Redis主從架構、RedisSentinel Redis、
Redis集群環境搭建及其實現的高可用與高可擴原理等內容,提供深入淺出的實戰案例,
旨在幫助讀者深入了解Redis數據結構領域和日常運維Redis所碰到的常見問題解決方案。
本書適合Redis新手、所有對Redis感興趣的開發與運維人員閱讀和參考,
同時還可作為高等院校相關專業的參考教程。

目錄大綱

前言
第1章 大數據高並發離不開Redis 1
1.1 NoSQL發展歷程 1
1.2 初識Redis 3
1.3 Redis的魅力 3
1.4 喜歡Redis的理由 4
1.5 學習Redis的第一步 6
1.5.1 在Windows環境下安裝Redis 6
1.5.2 在Linux環境下安裝Redis 11
1.5.3 在Docker環境下安裝Redis 13
1.5.4 Redis界面化管理工具 17
1.6 redis.conf文件的詳細說明 18
1.7 Redis基本操作 21
1.7.1 啟動Redis服務器 21
1.7.2 遠程登錄 21
1.7.3 切換數據庫 21
1.7.4 刪除鍵 22
1.7.5 刪除當前數據庫的所有鍵 22
第2章 Redis多種數據類型使用場景 23
2.1 String數據類型的API和使用場景 23
2.1.1 String數據類型的常規操作 23
2.1.2 結合應用場景演練 24
2.2 String也能做,為什麼還要用Hash 30
2.2.1 Hash數據類型的常規操作 31
2.2.2 結合應用場景演練 31
2.3 一種類型多種用法,原來List還可以這樣做 34
2.3.1 List模擬數據結構 35
2.3.2 List常規操作 38
2.3.3 利用列表迅速提升網站首頁的並發量 38
2.4 開啟Set數據類型的正確操作姿勢 39
2.4.1 明星緋聞和微博癱瘓的那些事 39
2.4.2 抽獎邏輯 39
2.4.3 文章點贊或者投票 40
2.4.4 共同好友統計 41
2.5 微服務的限流操作和Zset的那些瓜葛 42
2.5.1 利用Zset實現限流 43
2.5.2 新聞排行榜場景實戰 47
2.5.3 直播打賞排名場景實戰 48
第3章 數據結構底層 50
3.1 String數據結構底層解析 51
3.1.1 String的三種編碼 51
3.1.2 SDS和內存重新分配 54
3.1.3 embstr編碼的內容追加 56
3.1.4 內存空間釋放 57
3.1.5 SDS特徵 58
3.2 Hash數據結構底層解析 58
3.2.1 ZipList數據結構 58
3.2.2 HashTable數據結構 66
3.2.3 ZipList和HashTable的抉擇 81
3.3 List數據結構底層解析 83
3.3.1 單向鍊錶 83
3.3.2 雙向鍊錶 84
3.3.3 Redis鍊錶 84
3.3.4 快速列表 86
3.4 Set數據結構底層解析 91
3.4.1 整數集合 91
3.4.2 intset和HashTable的抉擇 94
3.5 Zset數據結構底層解析 95
3.5.1 跳躍表數據結構解析 95
3.5.2 ZipList和跳躍表的抉擇 99
第4章 數據持久化 101
4.1 RDB方式持久化 102
4.1.1 save觸發方式 103
4.1.2 bgsave觸發方式 103
4.1.3 後台觸發 105
4.1.4 RDB備份的應用場景 107
4.2 AOF方式持久化 107
4.2.1 AOF持久化流程 108
4.2.2 相關參數配置 113
4.2.3 重寫操作 113
4.3 AOF和RDB的數據恢復順序 115
4.4 RDB和AOF持久化的優缺點 116
4.4.1 RDB持久化的優缺點 116
4.4.2 AOF持久化的優缺點 116
4.5 AOF+RDB混合模式配置 117
第5章 Redis的事務和Lua腳本操作 119
5.1 事務概述 119
5.2 事務使用 120
5.2.1 事務的三個階段 120
5.2.2 事務範例 120
5.3 事務性質 123
5.3.1 原子性 123
5.3.2 一致性 124
5.3.3 隔離性 124
5.3.4 持久性 124
5.3.5 安全性 125
5.4 Lua腳本 126
5.4.1 eval 126
5.4.2 Lua和Redis數據類型的轉換 128
5.4.3 腳本的原子性 130
5.4.4 錯誤處理 130
5.4.5 帶寬和evalsha 131
5.4.6 腳本緩存 131
5.4.7 命令和純函數腳本 132
5.4.8 全局變量保護 133
5.4.9 內部腳本 133
5.4.10 沙箱和執行時間 135
5.4.11 Redis腳本命令 136
5.4.12 Lua腳本的好處 138
5.5 Lua實戰 138
第6章 pub/sub和Stream 142
6.1 頻道的訂閱與消息發送 142
6.2 發布與訂閱的使用 143
6.3 發布與訂閱的原理 145
6.4 訂閱模式 146
6.5 pub和sub使用範例 147
6.6 與其他發布和訂閱比較 148
6.7 Stream概述 148
6.8 Stream實例 154
6.8.1 同組消費模式 154
6.8.2 不同組消費模式 155
6.8.3 消息確認 157
第7章 主從復制 158
7.1 主從復制概述 159
7.2 主從復制工作原理 159
7.2.1 連接建立階段 160
7.2.2 數據同步階段 164
7.2.3 命令傳播階段 181
7.2.4 身份驗證 183
7.2.5 延遲與不一致 184
7.3 Redis複製的注意事項 185
7.3.1 複製的注意事項 185
7.3.2 複製的安全性 185
7.3.3 無須磁盤參與的複制 186
7.3.4 只讀性質的從節點 186
7.3.5 主從多種模式下的問題 187
7.4 搭建主從節點的實例 189
7.4.1 以命令行方式搭建主從節點 189
7.4.2 以配置文件方式搭建主從節點 192
7.4.3 以身份驗證模式搭建主從架構 195
7.5 主從架構的“坑”和優化技巧 197
7.5.1 複製超時問題 197
7.5.2 主從架構數據應用問題 198
7.5.3 主從復制中斷問題 199
7.5.4 主從復制應用中的優化技巧 199
7.5.5 主從架構重要配置總結 200
7.6 主從架構的作用 202
第8章 哨兵模式 203
8.1 哨兵架構概述 203
8.2 哨兵架構的搭建 204
8.2.1 運行Sentinel 205
8.2.2 Sentinel配置 205
8.2.3 Windows 10搭建Redis 5版本哨兵架構 211
8.2.4 Linux系統哨兵架構的搭建和驗證 215
8.3 Sentinel API 217
8.3.1 Sentinel命令 217
8.3.2 其他相關配置和說明 218
8.4 哨兵細節原理分析 221
8.4.1 sdown與odown 221
8.4.2 哨兵集群的自動發現機制 221
8.4.3 故障轉移的重新配置 222
8.4.4 從節點選舉和優先級 222
8.4.5 算法和內部結構 223
8.4.6 配置epoch 223
8.4.7 配置傳播 224
8.4.8 網絡分區下的一致性 224
8.5 客戶端訪問哨兵架構的系統 226
8.5.1 C#連接Redis哨兵架構的系統 226
8.5.2 Java連接Redis哨兵架構的系統 227
8.5.3 客戶端原理 227
第9章 Redis集群 228
9.1 集群概述 228
9.2 集群作用 228
9.3 集群設計注意事項 229
9.4 Redis集群的搭建 229
9.4.1 在Windows 10下搭建Redis 5集群 230
9.4.2 在Linux下搭建Redis 6集群 233
9.5 數據分區策略 234
9.6 Redis一致性保證 235
9.7 節點通信機制 236
9.7.1 通信端口 236
9.7.2 Gossip協議 237
9.8 集群的其他細節 239
9.8.1 Redis集群中的主從復制 239
9.8.2 Redis集群客戶端和服務器端的協議 239
9.8.3 故障檢測 241
9.9 從節點的選舉和提升 242
9.9.1 主節點回復從節點的投票請求 244
9.9.2 從節點選舉的競爭情況 245
9.9.3 update消息 245
9.9.4 備份遷移 245
9.9.5 備份遷移算法 246
9.9.6 安全寫入 247
9.9.7 鍵分佈模型 247
9.9.8 鍵哈希標籤 249
9.9.9 集群節點信息和源碼 249
9.9.10 集群相關命令 251
9.10 集群重新分片 251
9.11 擴容和縮容 253
9.11.1 擴容 253
9.11.2 縮容 258
9.12 故障轉移和高可用 260
9.13 集群使用時的注意事項 262
第10章 Redis 6新特徵 264
10.1 為什麼Redis 6是多線程 266
10.2 開啟多線程 267
10.3 Redis服務基準測試 268
10.4 ACL安全策略 269
10.4.1 ACL規則 269
10.4.2 使用外部ACL文件 271
10.4.3 使用ACL命令配置ACL 271
10.4.4 ACL實例 271
第11章 布隆過濾器 275
11.1 布隆過濾器概述 275
11.2 環境安裝 275
11.2.1 模塊化安裝 275
11.2.2 Docker安裝 276
11.3 布隆過濾器的原理 277
11.4 應用場景 278
第12章 Redis內存相關策略和內存碎片 279
12.1 maxmemory配置 279
12.2 數據淘汰策略 280
12.3 LRU算法 280
12.4 LFU算法 280
12.5 數據過期刪除策略 281
12.6 主從架構和數據持久化對數據的過期處理 281
12.7 內存碎片 282
12.7.1 Redis內存碎片的形成 282
12.7.2 內存使用情況 282
12.7.3 清理內存碎片 283
第13章 分佈式鎖 285
13.1 為什麼需要分佈式鎖 285
13.2 非阻塞鎖的實現和原理 288
13.3 阻塞鎖的實現和原理 290
13.4 Redlock原理 294
13.4.1 什麼是Redlock 294
13.4.2 單節點上實現Redlock 295
13.4.3 Redlock算法 295
第14章 高頻面試題 301
14.1 緩存穿透 301
14.2 緩存擊穿 304
14.3 緩存雪崩 305
附錄 Redis API詳情 306