https://read.douban.com/ebook/30898272/
作 者:付磊,張益軍 編著 著作 著
定 價:89
出?版?社:機械工業出版社
出版日期:2017-02-01
頁 數:442
裝 幀:平裝
ISBN:9787111557975
* * * * *
[TOC]
內容簡介 · · · · · ·
本書全面講解Redis基本功能及其應用,并結合線上開發與運維監控中的實際使用案例,深入分析并總結了實際開發運維中遇到的“陷阱”,以及背后的原因, 包含大規模集群開發與管理的場景、應用案例與開發技巧,為高效開發運維提供了大量實際經驗和建議。本書不要求讀者有任何Redis使用經驗,對入門與進階DevOps的開發者提供有價值的幫助。主要內容包括:Redis的安裝配置、API、各種高效功能、客戶端、持久化、復制、高可用、內存、哨兵、集群、緩存設計等,Redis高可用集群解決方案,Redis設計和使用中的問題,最后提供了一個開源工具:Redis監控運維云平臺CacheCloud。
作者簡介 · · · · · ·
付磊 搜狐視頻高級研發工程師,CacheCloud項目聯合創始人。擁有多年Redis開發運維經驗,為公司多個核心業務提供Redis服務,同時熱衷于技術傳播和分享,撰寫了大量關于Redis開發運維的技術文章。微博號carlosfl,博客地址是http://carlosfu.iteye.com。
張益軍 搜狐視頻資深研發工程師,CacheCloud項目聯合創始人,曾就職于美團、阿里巴巴等公司。搜狐視頻投放組負責人,目前從事投放平臺、反作弊等系統的架構設計和優化工作。研究興趣包括海量峰值訪問、分布式存儲等。微博號益軍YJ, 博客地址是http://hot66hot.iteye.com。
目錄
序 言
前 言
致 謝
#### 第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 應用申請和審批 402
13.4.4 客戶端接入 405
13.5 用戶功能 407
13.5.1 應用統計信息 408
13.5.2 實例列表 409
13.5.3 應用詳情 409
13.5.4 命令曲線 409
13.5.5 CacheCloud Redis Shell控制臺 410
13.5.6 慢查詢 410
13.5.7 應用拓撲 411
13.6 運維功能 413
13.6.1 應用運維 413
13.6.2 接入已存在的Redis節點 415
13.6.3 Redis配置模板 416
13.6.4 遷移工具 417
13.6.5 監控報警 420
13.6.6 系統配置管理 422
13.7 客戶端上報 423
13.7.1 客戶端上報整體設計 424
13.7.2 Jedis核心代碼修改 424
13.7.3 帶上報功能的客戶端 426
13.7.4 CacheCloud客戶端統計 427
13.8 本章重點回顧 429
#### 第14章 Redis配置統計字典 430
14.1 info系統狀態說明 430
14.1.1 命令說明 430
14.1.2 詳細說明 431
14.2 standalone配置說明和分析 436
14.2.1 總體配置 436
14.2.2 最大內存及策略 437
14.2.3 AOF相關配置 437
14.2.4 RDB相關配置 438
14.2.5 慢查詢配置 438
14.2.6 數據結構優化配置 439
14.2.7 復制相關配置 439
14.2.8 客戶端相關配置 440
14.2.9 安全相關配置 440
14.3 Sentinel配置說明和分析 440
14.4 Cluster配置說明和分析 441
- 目錄
- 安裝擴展
- 在 Windows 上安裝 PHP 擴展
- 測試Redis擴展函數
- 教程
- 簡介
- Redis 安裝
- Redis 配置
- 運行
- 測試
- 書籍
- 《Redis開發與運維》
- 《Redis入門指南》
- 《Redis實戰》
- 《當 Redis 遇上 ThinkPHP5》
- 參考站點
- 下載
- 命令參考
- 管理工具
- 視頻
- 云數據庫 Redis 版使用教程
- Redis 深入之道
- Redis高可用教程
- Redis入門
- NoSQL概述
- Redis概述
- Redis安裝
- Jedis入門
- PHP命令
- PHP中利用Redis管道加快執行
- Hash操作
- Set操作
- Gearman
- MySQL - Redis配合使用方案
- 應用場景
- 緩存應用
- Redis實現簡單的條件查詢功能
- 獲取網站中點擊量最高的前n篇文章
- 顯示最新的項目列表
- 排行榜相關
- 設計技巧
- SortedSets
- List列表
- 消息隊列
- 最新文章
- Set集合
- 共同好友
- 獨立 IP
- Linux教程
- 常用命令
- 哈希命令
- 字符串
- 集合
- 有序集合
- Redis 有序集合命令
- 有序集合命令(中)
- 發布訂閱
- 用例
- 列表
- Lindex
- Ltrim
- Rpush
- Lset
- Llen
- Lpush
- 信息
- info memory
- 安裝
- 數據類型
- Redis管道(pipeline)
- Memory Command
- 阿里云Redis
- 架構
- 4.0版本
- Redis 4.0 新功能介紹
- Redis Desktop Manager
- 創建hash列表數據
- Lua: 給 Redis 用戶的入門指導
- Lua入門
- 樂觀鎖介紹
- 悲觀鎖介紹
- 臟數據
- Redis核心概念
- Redis事務
- Lua
- 在Redis中使用lua腳本
- php-redis
- mysql緩存服務器
- redis setnx 實現分布式鎖和單機鎖
- 為什么分布式一定要有Redis?