发表于2024-12-22
Redis開發與運維 pdf epub mobi txt 電子書 下載 2024
從開發、運維兩個角度總結瞭Redis實戰經驗,深入淺齣地剖析底層實現,包含大規模集群開發與運維的實際案例、應用技巧。
全麵覆蓋Redis 3及以上版本的基本功能及應用,提供瞭大量手繪版圖片,細膩講解底層實現機製
本書全麵講解Redis基本功能及其應用,並結閤綫上開發與運維監控中的實際使用案例,深入分析並總結瞭實際開發運維中遇到的“陷阱”,以及背後的原因, 包含大規模集群開發與管理的場景、應用案例與開發技巧,為高效開發運維提供瞭大量實際經驗和建議。本書不要求讀者有任何Redis使用經驗對入門與進階DevOps的開發者提供有價值的幫助。主要內容包括:Redis的安裝配置、API、各種高效功能、客戶端、持久化、復製、高可用、內存、哨兵、集群、緩存設計等,Redis高可用集群解決方案,Redis設計和使用中的問題,最後提供瞭一個開源工具:Redis監控運維雲平颱CacheCloud。
付磊 搜狐視頻高級研發工程師,CacheCloud項目聯閤創始人。擁有多年Redis開發運維經驗,為公司多個核心業務提供Redis服務,同時熱衷於技術傳播和分享,撰寫瞭大量關於Redis開發運維的技術文章。微博號carlosfl,博客地址是http://carlosfu.iteye.com。
張益軍 搜狐視頻資深研發工程師,CacheCloud項目聯閤創始人,曾就職於美團、阿裏巴巴等公司。搜狐視頻投放組負責人,目前從事投放平颱、反作弊等係統的架構設計和優化工作。研究興趣包括海量峰值訪問、分布式存儲等。微博號益軍YJ, 博客地址是。
Redis在當今高性能架構中,發揮越來越重要的作用。本書對於體係性學習及掌握Redis,有非常好的參考作用。
——楊衛華(Tim Yang),新浪微博研發副總經理
作者對內存的介紹做到瞭深入淺齣,講清楚瞭重要的What、How。由於我從事分布式係統的開發,因此非常欣慰地看到寫底層/infra領域的書籍,期待更多這方麵的作品。寫書是非常辛苦的,需要投入大量的時間,非常感謝兩位作者艱苦卓絕的工作。
——劉奇,PingCAP CEO && TiDB/TiKV 創始人,Codis聯閤作者
本書是付磊和張益軍在幾個大型項目中積纍的Redis開發與運維的寶貴經驗,既有原理功能使用詳解,又有實際踩坑排雷經驗分享,最後一章對開源項目CacheCloud作瞭詳細的講解,是Redis開發、運維人員值得收藏的好書。
——田文寶,搜狐視頻技術總監
這本書不僅介紹瞭Redis的使用方法 ,更難能可貴的是,作者在書中把使用和維護Redis時經常會碰到的問題一一列舉瞭齣來,並給齣瞭相應的解決方案。通過瞭解這些方案,讀者可以有效地避免使用Redis時會遇到的一些陷阱,並學會如何更好地使用Redis。
——黃健宏,《Redis設計與實現》作者
Redis是目前*流行的kv存儲。本書從Redis的客戶端使用,到內部的實現原理,最後到運維,都給齣翔實的解決方案,是Redis從入門到精通的一本好書。
——陳宗誌,360基礎架構組技術經理,pika作者
作者不僅詳細地介紹Redis運維經驗,而且深入淺齣地剖析底層實現,讓讀者不僅知其然,也知其所以然。Redis的集群運維絕非是一件容易的事兒,讀此書,可以少走一些彎路,繞過一些“坑”。
——張海雷,優酷土豆廣告團隊資深工程師
這本書中Redis集群、開發運維陷阱、緩存設計和CacheCloud章節尤為精彩,都來自一綫運維開發Redis的寶貴實戰經驗。相信無論是DBA還是研發工程師都能從本書收獲新的知識。
——卓汝林,小米高級DBA
DevOps文化盛行,開發和運維的界綫越來越模糊,在Redis的實踐中本書應運而生。本書通過Redis開發運維詳實的介紹,結閤真實項目凝聚*佳實戰經驗,值得細細品味。
——李成武,阿裏巴巴技術專傢
序 言
前 言
緻 謝
第1章 初識Redis 1
1.1 盛贊Redis 1
1.2 Redis特性 2
1.3 Redis使用場景 5
1.3.1 Redis可以做什麼 5
1.3.2 Redis不可以做什麼 5
1.4 用好Redis的建議 6
1.5 正確安裝並啓動Redis 6
1.5.1 安裝Redis 7
1.5.2 配置、啓動、操作、關閉Redis 8
1.6 Redis重大版本 11
1.7 本章重點迴顧 14
第2章 API的理解和使用 15
2.1 預備 15
2.1.1 全局命令 15
2.1.2 數據結構和內部編碼 18
2.1.3 單綫程架構 19
2.2 字符串 21
2.2.1 命令 22
2.2.2 內部編碼 27
2.2.3 典型使用場景 28
2.3 哈希 31
2.3.1 命令 32
2.3.2 內部編碼 35
2.3.3 使用場景 36
2.4 列錶 38
2.4.1 命令 38
2.4.2 內部編碼 43
2.4.3 使用場景 44
2.5 集閤 46
2.5.1 命令 46
2.5.2 內部編碼 50
2.5.3 使用場景 51
2.6 有序集閤 52
2.6.1 命令 53
2.6.2 內部編碼 59
2.6.3 使用場景 59
2.7 鍵管理 60
2.7.1 單個鍵管理 60
2.7.2 遍曆鍵 67
2.7.3 數據庫管理 70
2.8 本章重點迴顧 73
第3章 小功能大用處 74
3.1 慢查詢分析 74
3.1.1 慢查詢的兩個配置參數 75
3.1.2 最佳實踐 77
3.2 Redis Shell 78
3.2.1 redis-cli詳解 78
3.2.2 redis-server詳解 82
3.2.3 redis-benchmark詳解 83
3.3 Pipeline 84
3.3.1 Pipeline概念 84
3.3.2 性能測試 85
3.3.3 原生批量命令與Pipeline對比 86
3.3.4 最佳實踐 87
3.4 事務與Lua 87
3.4.1 事務 87
3.4.2 Lua用法簡述 90
3.4.3 Redis與Lua 92
3.4.4 案例 94
3.4.5 Redis如何管理Lua腳本 96
3.5 Bitmaps 98
3.5.1 數據結構模型 98
3.5.2 命令 98
3.5.3 Bitmaps分析 101
3.6 HyperLogLog 102
3.7 發布訂閱 105
3.7.1 命令 106
3.7.2 使用場景 108
3.8 GEO 109
3.9 本章重點迴顧 112
第4章 客戶端 113
4.1 客戶端通信協議 113
4.2 Java客戶端Jedis 117
4.2.1 獲取Jedis 117
4.2.2 Jedis的基本使用方法 118
4.2.3 Jedis連接池的使用方法 122
4.2.4 Redis中Pipeline的使用方法 125
4.2.5 Jedis的Lua腳本 126
4.3 Python客戶端redis-py 128
4.3.1 獲取redis-py 128
4.3.2 redis-py的基本使用方法 128
4.3.3 redis-py中Pipeline的使用方法 130
4.3.4 redis-py中的Lua腳本使用方法 130
4.4 客戶端管理 131
4.4.1 客戶端API 132
4.4.2 客戶端相關配置 145
4.4.3 客戶端統計片段 145
4.5 客戶端常見異常 146
4.6 客戶端案例分析 149
4.6.1 Redis內存陡增 149
4.6.2 客戶端周期性的超時 151
4.7 本章重點迴顧 153
第5章 持久化 154
5.1 RDB 154
5.1.1 觸發機製 154
5.1.2 流程說明 155
5.1.3 RDB文件的處理 156
5.1.4 RDB的優缺點 156
5.2 AOF 157
5.2.1 使用AOF 157
5.2.2 命令寫入 157
5.2.3 文件同步 158
5.2.4 重寫機製 159
5.2.5 重啓加載 161
5.2.6 文件校驗 162
5.3 問題定位與優化 162
5.3.1 fork操作 162
5.3.2 子進程開銷監控和優化 163
5.3.3 AOF追加阻塞 165
5.4 多實例部署 166
5.5 本章重點迴顧 167
第6章 復製 168
6.1 配置 168
6.1.1 建立復製 168
6.1.2 斷開復製 170
6.1.3 安全性 170
6.1.4 隻讀 170
6.1.5 傳輸延遲 171
6.2 拓撲 171
6.3 原理 172
6.3.1 復製過程 172
6.3.2 數據同步 175
6.3.3 全量復製 178
6.3.4 部分復製 181
6.3.5 心跳 183
6.3.6 異步復製 184
6.4 開發與運維中的問題 184
6.4.1 讀寫分離 184
6.4.2 主從配置不一緻 186
6.4.3 規避全量復製 186
6.4.4 規避復製風暴 187
6.5 本章重點迴顧 188
第7章 Redis的噩夢:阻塞 189
7.1 發現阻塞 189
7.2 內在原因 191
7.2.1 API或數據結構使用不閤理 191
7.2.2 CPU飽和 193
7.2.3 持久化阻塞 194
7.3 外在原因 195
7.3.1 CPU競爭 195
7.3.2 內存交換 195
7.3.3 網絡問題 196
7.4 本章重點迴顧 199
第8章 理解內存 200
8.1 內存消耗 200
8.1.1 內存使用統計 200
8.1.2 內存消耗劃分 201
8.1.3 子進程內存消耗 203
8.2 內存管理 204
8.2.1 設置內存上限 204
8.2.2 動態調整內存上限 204
8.2.3 內存迴收策略 205
8.3 內存優化 209
8.3.1 redisObject對象 209
8.3.2 縮減鍵值對象 210
8.3.3 共享對象池 211
8.3.4 字符串優化 213
8.3.5 編碼優化 216
8.3.6 控製鍵的數量 223
8.4 本章重點迴顧 225
第9章 哨兵 226
9.1 基本概念 226
9.1.1 主從復製的問題 227
9.1.2 高可用 227
9.1.3 Redis Sentinel的高可用性 229
9.2 安裝和部署 232
9.2.1 部署拓撲結構 232
9.2.2 部署Redis數據節點 233
9.2.3 部署Sentinel節點 234
9.2.4 配置優化 236
9.2.5 部署技巧 243
9.3 API 244
9.4 客戶端連接 249
9.4.1 Redis Sentinel的客戶端 249
9.4.2 Redis Sentinel客戶端基本實現原理 249
9.4.3 Java操作Redis Sentinel 251
9.5 實現原理 254
9.5.1 三個定時監控任務 254
9.5.2 主觀下綫和客觀下綫 256
9.5.3 領導者Sentinel節點選舉 258
9.5.4 故障轉移 261
9.6 開發與運維中的問題 262
9.6.1 故障轉移日誌分析 262
9.6.2 節點運維 268
9.6.3 高可用讀寫分離 271
9.7 本章重點迴顧 272
第10章 集群 274
10.1 數據分布 274
10.1.1 數據分布理論 274
10.1.2 Redis數據分區 277
10.1.3 集群功能限製 278
10.2 搭建集群 278
10.2.1 準備節點 278
10.2.2 節點握手 280
10.2.3 分配槽 282
10.2.4 用redis-trib.rb搭建集群 284
10.3 節點通信 287
10.3.1 通信流程 287
10.3.2 Gossip消息 287
10.3.3 節點選擇 290
10.4 集群伸縮 291
10.4.1 伸縮原理 291
10.4.2 擴容集群 293
10.4.3 收縮集群 301
10.5 請求路由 305
10.5.1 請求重定嚮 305
10.5.2 Smart客戶端 309
10.5.3 ASK重定嚮 318
10.6 故障轉移 323
10.6.1 故障發現 323
10.6.2 故障恢復 329
10.6.3 故障轉移時間 334
10.6.4 故障轉移演練 334
10.7 集群運維 336
10.7.1 集群完整性 336
10.7.2 帶寬消耗 337
10.7.3 Pub/Sub廣播問題 337
10.7.4 集群傾斜 338
10.7.5 集群讀寫分離 339
10.7.6 手動故障轉移 341
10.7.7 數據遷移 344
10.8 本章重點迴顧 344
第11章 緩存設計 346
11.1 緩存的收益和成本 346
11.2 緩存更新策略 347
11.3 緩存粒度控製 349
11.4 穿透優化 350
11.5 無底洞優化 352
11.6 雪崩優化 359
11.7 熱點key重建優化 360
11.8 本章重點迴顧 364
第12章 開發運維的“陷阱” 365
12.1 Linux配置優化 365
12.1.1 內存分配控製 365
12.1.2 swappiness 367
12.1.3 THP 369
12.1.4 OOM killer 370
12.1.5 使用NTP 371
12.1.6 ulimit 371
12.1.7 TCP backlog 372
12.2 flushall/flushdb誤操作 372
12.2.1 緩存與存儲 373
12.2.2 藉助AOF機製恢復 373
12.2.3 RDB有什麼變化 374
12.2.4 從節點有什麼變化 374
12.2.5 快速恢復數據 374
12.3 安全的Redis 375
12.3.1 Redis密碼機製 377
12.3.2 僞裝危險命令 378
12.3.3 防火牆 380
12.3.4 bind 380
12.3.5 定期備份數據 381
12.3.6 不使用默認端口 381
12.3.7 使用非root用戶啓動 381
12.4 處理bigkey 382
12.4.1 bigkey的危害 382
12.4.2 如何發現 382
12.4.3 如何刪除 383
12.4.4 最佳實踐思路 386
12.5 尋找熱點key 386
12.6 本章重點迴顧 391
第13章 Redis監控運維雲平颱CacheCloud 392
13.1 CacheCloud是什麼 392
13.1.1 現有問題 393
13.1.2 CacheCloud基本功能 393
13.2 快速部署 395
13.2.1 CacheCloud環境需求 395
13.2.2 CacheCloud快速開始 395
13.3 機器部署 397
13.3.1 部署腳本 398
13.3.2 添加機器 399
13.4 接入應用 400
13.4.1 總體流程 401
13.4.2 賬戶申請和審批 401
13.4.3 應用申 Redis開發與運維 下載 mobi epub pdf txt 電子書
還沒開始看,應該可以當作不錯的工具書
評分質量很棒,紙質清晰,物流也很快,包裝也很到位
評分啊啊啊啊啊啊啊啊啦啦啦啦啦
評分挺好,學習中
評分此用戶未填寫評價內容
評分不錯的一本書
評分現在的書真是越來越貴,現在也隻有在搞活動時纔買得起
評分非常好,作者有深厚的理論功底、實踐經曆,大神帶我飛!
評分很好的書,詳細,堅持看完
Redis開發與運維 pdf epub mobi txt 電子書 下載