
掃描右側(cè)圖片或微信搜索 “ Java技術(shù)分享屋 ” ,回復(fù) “ 驗(yàn)證碼 ” ,獲取驗(yàn)證密碼。
本資料僅供讀者預(yù)覽及學(xué)習(xí)交流使用,不能用于商業(yè)用途,請(qǐng)?jiān)谙螺d后24小時(shí)內(nèi)刪除。如果喜歡,請(qǐng)購(gòu)買正版!
一.資料圖片
二.資料簡(jiǎn)介
本書全面講解Redis基本功能及其應(yīng)用,并結(jié)合線上開發(fā)與運(yùn)維監(jiān)控中的實(shí)際使用案例,深入分析并總結(jié)了實(shí)際開發(fā)運(yùn)維中遇到的“陷阱”,以及背后的原因, 包含大規(guī)模集群開發(fā)與管理的場(chǎng)景、應(yīng)用案例與開發(fā)技巧,為高效開發(fā)運(yùn)維提供了大量實(shí)際經(jīng)驗(yàn)和建議。本書不要求讀者有任何Redis使用經(jīng)驗(yàn),對(duì)入門與進(jìn)階DevOps的開發(fā)者提供有價(jià)值的幫助。主要內(nèi)容包括:Redis的安裝配置、API、各種高效功能、客戶端、持久化、復(fù)制、高可用、內(nèi)存、哨兵、集群、緩存設(shè)計(jì)等,Redis高可用集群解決方案,Redis設(shè)計(jì)和使用中的問題,最后提供了一個(gè)開源工具:Redis監(jiān)控運(yùn)維云平臺(tái)CacheCloud。
三.作者簡(jiǎn)介
付磊 搜狐視頻高級(jí)研發(fā)工程師,CacheCloud項(xiàng)目聯(lián)合創(chuàng)始人。擁有多年Redis開發(fā)運(yùn)維經(jīng)驗(yàn),為公司多個(gè)核心業(yè)務(wù)提供Redis服務(wù),同時(shí)熱衷于技術(shù)傳播和分享,撰寫了大量關(guān)于Redis開發(fā)運(yùn)維的技術(shù)文章。微博號(hào)carlosfl。
張益軍 搜狐視頻資深研發(fā)工程師,CacheCloud項(xiàng)目聯(lián)合創(chuàng)始人,曾就職于美團(tuán)、阿里巴巴等公司。搜狐視頻投放組負(fù)責(zé)人,目前從事投放平臺(tái)、反作弊等系統(tǒng)的架構(gòu)設(shè)計(jì)和優(yōu)化工作。研究興趣包括海量峰值訪問、分布式存儲(chǔ)等。微博號(hào)益軍YJ。
四.資料目錄
序 言
前 言
致 謝
第1章 初識(shí)Redis 1
1.1 盛贊Redis 1
1.2 Redis特性 2
1.3 Redis使用場(chǎng)景 5
1.3.1 Redis可以做什么 5
1.3.2 Redis不可以做什么 5
1.4 用好Redis的建議 6
1.5 正確安裝并啟動(dòng)Redis 6
1.5.1 安裝Redis 7
1.5.2 配置、啟動(dòng)、操作、關(guān)閉Redis 8
1.6 Redis重大版本 11
1.7 本章重點(diǎn)回顧 14
第2章 API的理解和使用 15
2.1 預(yù)備 15
2.1.1 全局命令 15
2.1.2 數(shù)據(jù)結(jié)構(gòu)和內(nèi)部編碼 18
2.1.3 單線程架構(gòu) 19
2.2 字符串 21
2.2.1 命令 22
2.2.2 內(nèi)部編碼 27
2.2.3 典型使用場(chǎng)景 28
2.3 哈希 31
2.3.1 命令 32
2.3.2 內(nèi)部編碼 35
2.3.3 使用場(chǎng)景 36
2.4 列表 38
2.4.1 命令 38
2.4.2 內(nèi)部編碼 43
2.4.3 使用場(chǎng)景 44
2.5 集合 46
2.5.1 命令 46
2.5.2 內(nèi)部編碼 50
2.5.3 使用場(chǎng)景 51
2.6 有序集合 52
2.6.1 命令 53
2.6.2 內(nèi)部編碼 59
2.6.3 使用場(chǎng)景 59
2.7 鍵管理 60
2.7.1 單個(gè)鍵管理 60
2.7.2 遍歷鍵 67
2.7.3 數(shù)據(jù)庫(kù)管理 70
2.8 本章重點(diǎn)回顧 73
第3章 小功能大用處 74
3.1 慢查詢分析 74
3.1.1 慢查詢的兩個(gè)配置參數(shù) 75
3.1.2 最佳實(shí)踐 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 性能測(cè)試 85
3.3.3 原生批量命令與Pipeline對(duì)比 86
3.3.4 最佳實(shí)踐 87
3.4 事務(wù)與Lua 87
3.4.1 事務(wù) 87
3.4.2 Lua用法簡(jiǎn)述 90
3.4.3 Redis與Lua 92
3.4.4 案例 94
3.4.5 Redis如何管理Lua腳本 96
3.5 Bitmaps 98
3.5.1 數(shù)據(jù)結(jié)構(gòu)模型 98
3.5.2 命令 98
3.5.3 Bitmaps分析 101
3.6 HyperLogLog 102
3.7 發(fā)布訂閱 105
3.7.1 命令 106
3.7.2 使用場(chǎng)景 108
3.8 GEO 109
3.9 本章重點(diǎn)回顧 112
第4章 客戶端 113
4.1 客戶端通信協(xié)議 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 客戶端相關(guān)配置 145
4.4.3 客戶端統(tǒng)計(jì)片段 145
4.5 客戶端常見異常 146
4.6 客戶端案例分析 149
4.6.1 Redis內(nèi)存陡增 149
4.6.2 客戶端周期性的超時(shí) 151
4.7 本章重點(diǎn)回顧 153
第5章 持久化 154
5.1 RDB 154
5.1.1 觸發(fā)機(jī)制 154
5.1.2 流程說明 155
5.1.3 RDB文件的處理 156
5.1.4 RDB的優(yōu)缺點(diǎn) 156
5.2 AOF 157
5.2.1 使用AOF 157
5.2.2 命令寫入 157
5.2.3 文件同步 158
5.2.4 重寫機(jī)制 159
5.2.5 重啟加載 161
5.2.6 文件校驗(yàn) 162
5.3 問題定位與優(yōu)化 162
5.3.1 fork操作 162
5.3.2 子進(jìn)程開銷監(jiān)控和優(yōu)化 163
5.3.3 AOF追加阻塞 165
5.4 多實(shí)例部署 166
5.5 本章重點(diǎn)回顧 167
第6章 復(fù)制 168
6.1 配置 168
6.1.1 建立復(fù)制 168
6.1.2 斷開復(fù)制 170
6.1.3 安全性 170
6.1.4 只讀 170
6.1.5 傳輸延遲 171
6.2 拓?fù)?171
6.3 原理 172
6.3.1 復(fù)制過程 172
6.3.2 數(shù)據(jù)同步 175
6.3.3 全量復(fù)制 178
6.3.4 部分復(fù)制 181
6.3.5 心跳 183
6.3.6 異步復(fù)制 184
6.4 開發(fā)與運(yùn)維中的問題 184
6.4.1 讀寫分離 184
6.4.2 主從配置不一致 186
6.4.3 規(guī)避全量復(fù)制 186
6.4.4 規(guī)避復(fù)制風(fēng)暴 187
6.5 本章重點(diǎn)回顧 188
第7章 Redis的噩夢(mèng):阻塞 189
7.1 發(fā)現(xiàn)阻塞 189
7.2 內(nèi)在原因 191
7.2.1 API或數(shù)據(jù)結(jié)構(gòu)使用不合理 191
7.2.2 CPU飽和 193
7.2.3 持久化阻塞 194
7.3 外在原因 195
7.3.1 CPU競(jìng)爭(zhēng) 195
7.3.2 內(nèi)存交換 195
7.3.3 網(wǎng)絡(luò)問題 196
7.4 本章重點(diǎn)回顧 199
第8章 理解內(nèi)存 200
8.1 內(nèi)存消耗 200
8.1.1 內(nèi)存使用統(tǒng)計(jì) 200
8.1.2 內(nèi)存消耗劃分 201
8.1.3 子進(jìn)程內(nèi)存消耗 203
8.2 內(nèi)存管理 204
8.2.1 設(shè)置內(nèi)存上限 204
8.2.2 動(dòng)態(tài)調(diào)整內(nèi)存上限 204
8.2.3 內(nèi)存回收策略 205
8.3 內(nèi)存優(yōu)化 209
8.3.1 redisObject對(duì)象 209
8.3.2 縮減鍵值對(duì)象 210
8.3.3 共享對(duì)象池 211
8.3.4 字符串優(yōu)化 213
8.3.5 編碼優(yōu)化 216
8.3.6 控制鍵的數(shù)量 223
8.4 本章重點(diǎn)回顧 225
第9章 哨兵 226
9.1 基本概念 226
9.1.1 主從復(fù)制的問題 227
9.1.2 高可用 227
9.1.3 Redis Sentinel的高可用性 229
9.2 安裝和部署 232
9.2.1 部署拓?fù)浣Y(jié)構(gòu) 232
9.2.2 部署Redis數(shù)據(jù)節(jié)點(diǎn) 233
9.2.3 部署Sentinel節(jié)點(diǎn) 234
9.2.4 配置優(yōu)化 236
9.2.5 部署技巧 243
9.3 API 244
9.4 客戶端連接 249
9.4.1 Redis Sentinel的客戶端 249
9.4.2 Redis Sentinel客戶端基本實(shí)現(xiàn)原理 249
9.4.3 Java操作Redis Sentinel 251
9.5 實(shí)現(xiàn)原理 254
9.5.1 三個(gè)定時(shí)監(jiān)控任務(wù) 254
9.5.2 主觀下線和客觀下線 256
9.5.3 領(lǐng)導(dǎo)者Sentinel節(jié)點(diǎn)選舉 258
9.5.4 故障轉(zhuǎn)移 261
9.6 開發(fā)與運(yùn)維中的問題 262
9.6.1 故障轉(zhuǎn)移日志分析 262
9.6.2 節(jié)點(diǎn)運(yùn)維 268
9.6.3 高可用讀寫分離 271
9.7 本章重點(diǎn)回顧 272
第10章 集群 274
10.1 數(shù)據(jù)分布 274
10.1.1 數(shù)據(jù)分布理論 274
10.1.2 Redis數(shù)據(jù)分區(qū) 277
10.1.3 集群功能限制 278
10.2 搭建集群 278
10.2.1 準(zhǔn)備節(jié)點(diǎn) 278
10.2.2 節(jié)點(diǎn)握手 280
10.2.3 分配槽 282
10.2.4 用redis-trib.rb搭建集群 284
10.3 節(jié)點(diǎn)通信 287
10.3.1 通信流程 287
10.3.2 Gossip消息 287
10.3.3 節(jié)點(diǎn)選擇 290
10.4 集群伸縮 291
10.4.1 伸縮原理 291
10.4.2 擴(kuò)容集群 293
10.4.3 收縮集群 301
10.5 請(qǐng)求路由 305
10.5.1 請(qǐng)求重定向 305
10.5.2 Smart客戶端 309
10.5.3 ASK重定向 318
10.6 故障轉(zhuǎn)移 323
10.6.1 故障發(fā)現(xiàn) 323
10.6.2 故障恢復(fù) 329
10.6.3 故障轉(zhuǎn)移時(shí)間 334
10.6.4 故障轉(zhuǎn)移演練 334
10.7 集群運(yùn)維 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 手動(dòng)故障轉(zhuǎn)移 341
10.7.7 數(shù)據(jù)遷移 344
10.8 本章重點(diǎn)回顧 344
第11章 緩存設(shè)計(jì) 346
11.1 緩存的收益和成本 346
11.2 緩存更新策略 347
11.3 緩存粒度控制 349
11.4 穿透優(yōu)化 350
11.5 無底洞優(yōu)化 352
11.6 雪崩優(yōu)化 359
11.7 熱點(diǎn)key重建優(yōu)化 360
11.8 本章重點(diǎn)回顧 364
第12章 開發(fā)運(yùn)維的“陷阱” 365
12.1 Linux配置優(yōu)化 365
12.1.1 內(nèi)存分配控制 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 緩存與存儲(chǔ) 373
12.2.2 借助AOF機(jī)制恢復(fù) 373
12.2.3 RDB有什么變化 374
12.2.4 從節(jié)點(diǎn)有什么變化 374
12.2.5 快速恢復(fù)數(shù)據(jù) 374
12.3 安全的Redis 375
12.3.1 Redis密碼機(jī)制 377
12.3.2 偽裝危險(xiǎn)命令 378
12.3.3 防火墻 380
12.3.4 bind 380
12.3.5 定期備份數(shù)據(jù) 381
12.3.6 不使用默認(rèn)端口 381
12.3.7 使用非root用戶啟動(dòng) 381
12.4 處理bigkey 382
12.4.1 bigkey的危害 382
12.4.2 如何發(fā)現(xiàn) 382
12.4.3 如何刪除 383
12.4.4 最佳實(shí)踐思路 386
12.5 尋找熱點(diǎn)key 386
12.6 本章重點(diǎn)回顧 391
第13章 Redis監(jiān)控運(yùn)維云平臺(tái)CacheCloud 392
13.1 CacheCloud是什么 392
13.1.1 現(xiàn)有問題 393
13.1.2 CacheCloud基本功能 393
13.2 快速部署 395
13.2.1 CacheCloud環(huán)境需求 395
13.2.2 CacheCloud快速開始 395
13.3 機(jī)器部署 397
13.3.1 部署腳本 398
13.3.2 添加機(jī)器 399
13.4 接入應(yīng)用 400
13.4.1 總體流程 401
13.4.2 賬戶申請(qǐng)和審批 401
13.4.3 應(yīng)用申請(qǐng)和審批 402
13.4.4 客戶端接入 405
13.5 用戶功能 407
13.5.1 應(yīng)用統(tǒng)計(jì)信息 408
13.5.2 實(shí)例列表 409
13.5.3 應(yīng)用詳情 409
13.5.4 命令曲線 409
13.5.5 CacheCloud Redis Shell控制臺(tái) 410
13.5.6 慢查詢 410
13.5.7 應(yīng)用拓?fù)?411
13.6 運(yùn)維功能 413
13.6.1 應(yīng)用運(yùn)維 413
13.6.2 接入已存在的Redis節(jié)點(diǎn) 415
13.6.3 Redis配置模板 416
13.6.4 遷移工具 417
13.6.5 監(jiān)控報(bào)警 420
13.6.6 系統(tǒng)配置管理 422
13.7 客戶端上報(bào) 423
13.7.1 客戶端上報(bào)整體設(shè)計(jì) 424
13.7.2 Jedis核心代碼修改 424
13.7.3 帶上報(bào)功能的客戶端 426
13.7.4 CacheCloud客戶端統(tǒng)計(jì) 427
13.8 本章重點(diǎn)回顧 429
第14章 Redis配置統(tǒng)計(jì)字典 430
14.1 info系統(tǒng)狀態(tài)說明 430
14.1.1 命令說明 430
14.1.2 詳細(xì)說明 431
14.2 standalone配置說明和分析 436
14.2.1 總體配置 436
14.2.2 最大內(nèi)存及策略 437
14.2.3 AOF相關(guān)配置 437
14.2.4 RDB相關(guān)配置 438
14.2.5 慢查詢配置 438
14.2.6 數(shù)據(jù)結(jié)構(gòu)優(yōu)化配置 439
14.2.7 復(fù)制相關(guān)配置 439
14.2.8 客戶端相關(guān)配置 440
14.2.9 安全相關(guān)配置 440
14.3 Sentinel配置說明和分析 440
14.4 Cluster配置說明和分析 441