搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Redis开发与运维
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787111557975
  • 作      者:
    付磊,张益军编著
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2017
收藏
编辑推荐

从开发、运维两个角度总结了Redis实战经验,深入浅出地剖析底层实现,包含大规模集群开发与运维的实际案例、应用技巧。

全面覆盖Redis 3及以上版本的基本功能及应用,提供了大量手绘版图片,细腻讲解底层实现机制

展开
作者简介

付磊  搜狐视频高级研发工程师,CacheCloud项目联合创始人。拥有多年Redis开发运维经验,为公司多个核心业务提供Redis服务,同时热衷于技术传播和分享,撰写了大量关于Redis开发运维的技术文章。微博号carlosfl,博客地址是http://carlosfu.iteye.com。

 

张益军 搜狐视频资深研发工程师,CacheCloud项目联合创始人,曾就职于美团、阿里巴巴等公司。搜狐视频投放组负责人,目前从事投放平台、反作弊等系统的架构设计和优化工作。研究兴趣包括海量峰值访问、分布式存储等。微博号益军YJ, 博客地址是http://hot66hot.iteye.com


展开
内容介绍

本书全面讲解Redis基本功能及其应用,并结合线上开发与运维监控中的实际使用案例,深入分析并总结了实际开发运维中遇到的“陷阱”,以及背后的原因, 包含大规模集群开发与管理的场景、应用案例与开发技巧,为高效开发运维提供了大量实际经验和建议。本书不要求读者有任何Redis使用经验,对入门与进阶DevOps的开发者提供有价值的帮助。主要内容包括:Redis的安装配置、API、各种高效功能、客户端、持久化、复制、高可用、内存、哨兵、集群、缓存设计等,Redis高可用集群解决方案,Redis设计和使用中的问题,最后提供了一个开源工具:Redis监控运维云平台CacheCloud。

展开
精彩书评

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 应用申请和审批  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


展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证