由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
全新Redis开发与运维付磊,张益军 编著9787111557975
¥ ×1
序言
前言
致谢
章初识Redis1
1.1盛赞Redis1
1.2Redis特2
1.3Redis使用场景5
1.3.1Redis可以做什么5
1.3.2Redis不可以做什么5
1.4用好Redis的建议6
1.5正确安装并启动Redis6
1.5.1安装Redis7
1.5.2配置、启动、操作、关闭Redis8
1.6Redis重大版本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..典型使用场景28
.哈希1
..1命令32
..2内部编码35
..使用场景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.2RedisShell78
3.2.1redis-cli详解78
3.2.2redis-server详解82
3..redis-benchmark详解83
3.3Pipeline84
3.3.1Pipeline概念84
3.3.2能测试85
3.3.3原生批量命令与Pipeline对比86
3.3.4很好实践87
3.4事务与Lua87
3.4.1事务87
3.4.2Lua用法简述90
3.4.3Redis与Lua92
3.4.4案例94
3.4.5Redis如何管理Lua脚本96
3.5Bitmaps98
3.5.1数据结构模型98
3.5.2命令98
3.5.3Bitmaps分析101
3.6HyperLogLg02
3.7发布订阅105
3.7.1命令106
3.7.2使用场景108
3.8GEO109
3.9本章重点回顾112
第4章客户端113
4.1客户端通信协议113
4.2Java客户端Jedis117
4.2.1获取Jedis117
4.2.2Jedis的基本使用方法118
4..Jedis连接池的使用方法122
4.2.4Redis中Pipeline的使用方法125
4.2.5Jedis的Lua脚本126
4.3Python客户端redis-py128
4.3.1获取redis-py128
4.3.2redis-py的基本使用方法128
4.3.3redis-py中Pipeline的使用方法130
4.3.4redis-py中的Lua脚本使用方法130
4.4客户端管理131
4.4.1客户端API132
4.4.2客户端相关配置145
4.4.3客户端统计片段145
4.5客户端常见异常146
4.6客户端案例分析149
4.6.1Redis内存陡增149
4.6.2客户端周期的超时151
4.7本章重点回顾153
第5章持久化154
5.1RDB154
5.1.1触发机制154
5.1.2流程说明155
5.1.3RDB文件的处理156
5.1.4RDB的优缺点156
5.2AOF157
5.2.1使用AOF157
5.2.2命令写入157
5..文件同步158
5.2.4重写机制159
5.2.5重启加载161
5.2.6文件校验162
5.3问题定位与优化162
5.3.1fork操作162
5.3.2子进程开销监控和优化163
5.3.3AOF追加阻塞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.1API或数据结构使用不合理191
7.2.2CPU饱和193
7..持久化阻塞194
7.3外在原因195
7.3.1CPU竞争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..内存回收策略205
8.3内存优化209
8.3.1redisObject对象209
8.3.2缩减键值对象210
8.3.3共享对象池211
8.3.4字符串优化213
8.3.5编码优化216
8.3.6控制键的数量2
8.4本章重点回顾225
第9章哨兵226
9.1基本概念226
9.1.1主从复制的问题227
9.1.2高可用227
9.1.3RedisSentinel的高可用229
9.2安装和部署2
9.2.1部署拓扑结构2
9.2.2部署Redis数据节点
9..部署Sentinel节点4
9.2.4配置优化
9.2.5部署技巧243
9.3API244
9.4客户端连接249
9.4.1RedisSentinel的客户端249
9.4.2RedisSentinel客户端基本实现原理249
9.4.3Java操作RedisSentinel251
9.5实现原理254
9.5.1三个定时监控任务254
9.5.2主观下线和客观下线256
9.5.3Sentinel节点选举258
9.5.4故障转移261
9.6开发与运维中的问题262
9.6.1故障转移日志分析262
9.6.2节点运维268
9.6.3高可用读写分离271
9.7本章重点回顾272
0章集群274
10.1数据分布274
10.1.1数据分布理论274
10.1.2Redis数据分区277
10.1.3集群功能278
10.2搭建集群278
10.2.1准备节点278
10.2.2节点握手280
10..分配槽282
10.2.4用redis-trib.rb搭建集群284
10.3节点通信287
10.3.1通信流程287
10.3.2Gossip消息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.2Smart客户端309
10.5.3ASK重定向318
10.6故障转移3
10.6.1故障发现3
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.3Pub/Sub广播问题337
10.7.4集群倾斜338
10.7.5集群读写分离339
10.7.6手动故障转移341
10.7.7数据迁移344
10.8本章重点回顾344
1章缓存设计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
2章开发运维的“陷阱”365
12.1Linux配置优化365
12.1.1内存分配控制365
12.1.2swappiness367
12.1.3THP369
12.1.4OOMkiller370
12.1.5使用NTP371
12.1.6ulimit371
12.1.7TCPbacklog372
12.2flushall/flushdb误操作372
12.2.1缓存与存储373
12.2.2借AOF机制恢复373
12..RDB有什么变化374
12.2.4从节点有什么变化374
12.2.5快速恢复数据374
1.安全的Redis375
1..1Redis密码机制377
1..2伪装危险命令378
1..防火墙380
1..4bind380
1..5定期备份数据381
1..不使用默认端口381
1..使用非root用户启动381
12.4处理bigkey382
12.4.1bigkey的危害382
12.4.2如何发现382
12.4.3如何删除383
12.4.4很好实践思路386
12.5寻找热点key386
12.6本章重点回顾391
3章Redis监控运维云平台CacheCloud392
13.1CacheCloud是什么392
13.1.1现有问题393
13.1.2CacheCloud基本功能393
13.2快速部署395
13.2.1CacheCloud环境需求395
13.2.2CacheCloud快速开始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.5CacheCloudRedisShell控制台410
13.5.6慢查询410
13.5.7应用拓扑411
13.6运维功能413
13.6.1应用运维413
13.6.2接入已存在的Redis节点415
13.6.3Redis配置模板416
13.6.4迁移工具417
13.6.5监控报警420
13.6.6系统配置管理422
13.7客户端上报4
13.7.1客户端上报整体设计424
13.7.2Jedis核心代码修改424
13.7.3带上报功能的客户端426
13.7.4CacheCloud客户端统计427
13.8本章重点回顾429
4章Redis配置统计字典430
14.1info系统状态说明430
14.1.1命令说明430
14.1.2详细说明431
14.2standalone配置说明和分析436
14.2.1总体配置436
14.2.2优选内存及策略437
14..AOF相关配置437
14.2.4RDB相关配置438
14.2.5慢查询配置438
14.2.6数据结构优化配置439
14.2.7复制相关配置439
14.2.8客户端相关配置440
14.2.9安全相关配置440
14.3Sentinel配置说明和分析440
14.4Cluster配置说明和分析441
付磊,搜狐视频不错研发,CacheCloud项目联合创始人。拥有多年Redis开发运维经验,为公司多个核心业务提供Redis服务,同时热衷于技术传播和分享,撰写了大量关于Redis开发运维的技术文章。
张益军 搜狐视频资历研发,CacheCloud项目联合创始人,曾就职于美团、等公司。搜狐视频投放组负责人,目前从事投放台、作弊等系统的架构设计和优化工作。研究兴趣包括海量峰值访问、分布式存储等。
前 言?IntroductionRedis作为基于键值对的NoSL数据库,具有高能、丰富的数据结构、持久化、高可用、分布式等特,同时Redis本身很好稳定,已经得到业界的广泛认可和使用。掌握Redis已经逐步成为开发和运维人员的技能之一。 本书关注了Redis开发运维的方方面面,尤其对于开发运维中如何提高效率、减少可能遇到的问题进行详细分析,但本书不单单介绍怎么解决这些问题,而是通过对Redis重要原理的解析,帮开发运维人员学会找到问题的方法,以及理解背后的原理,从而让开发运维人员不仅知其然,而且知其所以然。 本书涵盖内容章 初识Redis,带领读者进入Redis的世界,了解它的前世今生、众多特、应场景、安装配置、简单使用,对Redis发展过程中的重要版本进行说明,可以让读者对Redis有一个全面的认识。 第2章 API的理解和使用,全面介绍了Redis提供的5种数据结构字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(zset)的数据模型、常用命令、典型应用场景,并且每个小节都会给出在Redis开发过程可能要注意的坑和技巧。同时本章还会对Redis的单线程处理机制、键值管理做一个全面介绍,通过对这些原理的理解,读者可以在合适的应用场景选择合适的数据结构和命令进行开发,有效提高程序效率,降低可能产生的问题和隐患。 第3章 小功能大用处,除了5种数据结构外,Redis还提供了诸如慢查询、Redis Shell、Pipeline、Lua脚本、Bitmaps、HyperLogLog、发布订阅、GEO等附加功能,在这些功能的帮下,Redis的应用场景更加丰富。 第4章 客户端,本章重点关注Redis客户端的开发,介绍了Redis的客户端通信协议、详细讲解了Java客户端Jedis的使用技巧,同时通过从原理角度剖析在开发运维中,客户端的监控和管理技巧,给出客户端开发中常见问题以及案例讲解。 第5章 持久化,Redis的持久化功能有效避免因进程退出造成的数据丢失问题,本章首先介绍RDB和AOF两种持久化配置和运行流程,其次对常见的持久化问题进行定位和优化,结合Redis常见的单机多实例部署场景进行优化。 第6章 复制,在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到机器,用于故障恢复和负载均衡等需求,Redis也是如此。它为我们提供了复制(replication)功能,实现了多个相同数据的Redis副本。复制功能是高可用Redis的基础,后面章节的哨兵和集群都是在复制的基础上实现高可用。 第7章 Redis的噩梦:阻塞,Redis是典型的单线程架构,所有的读写操作都在一条主线程中完成的。当Redis用于高并发场景时这条线程就变成了它的生命线。如果出现阻塞哪怕是很短时间对于我们的应用来说都是噩梦。导致阻塞问题的场景大致分为内在原因和外在原因,本章将进行详细分析。 第8章 理解内存,Redis所有的数据存在于内存中,如何高效利用Redis内存变得很好重要。高效利用Redis内存首先需要理解Redis内存消耗在哪里,如何管理内存,再深入到如何优化内存。掌握这些知识后相信读者能够实现用更少的内存存储更多的数据从而降低成本。 第9章 哨兵,Redis从2.8版本开始正式提供了Redis Sentinel,它有效解决了主从复制模式下故障转移的若干问题,为Redis提供了高可用功能。本章将一步步解析Redis Sentinel的相关概念、安装部署、配置、命令使用、原理解析,分析了Redis Sentinel运维中的一些问题。 0章 集群,是本书的重头戏,Redis Cluster是Redis 3提供的Redis分布式解决方案,有效解决了Redis分布式方面的需求,理解应用好Redis Cluster将极大的解放我们对分布式Redis的需求,同时它也是学分布存储的不错案例。本章将针对RedisCluster的数据分布,搭建集群,节点通信,请求路由,集群伸缩,故障转移等方面进行分析说明。 1章 缓存设计,缓存能够有效加速应用的读写速度,以及降低后端负载,对于开发人员进行日常应用的开发至关重要,但是将缓存加入应用架构后也会带来一些问题,本章将介绍缓存使用和设计中遇到的问题,具体包括:缓存的收益和成本、缓存更新策略、缓存粒度控制、穿透问题优化、无底洞问题优化、雪崩问题优化、热点key优化。 2章 开发运维的“陷阱”,介绍Redis开发运维中的一些棘手问题,具体包括:Linux配置优化、flush误操作数据恢复、如何让Redis变得安全、bigkey问题、热点key问题。 3章 Redis监控运维云平台CacheCloud,介绍笔者所在团队开源的Redis运维工具CacheCloud,它有效解决了Redis监控和运维中的一些问题,本章将按照快速部署、机器部署、接入应用、用户功能、运维功能多个维度全面的介绍CacheCloud,相信在它的帮下,读者可以更好的监控和运维好Redis。 4章 Redis配置统计字典,会对Redis的系统状态信息以及全部配置做一个全面的梳理,希望本章能够成为Redis配置统计字典,协大家分析和解决日常开发和运维中遇到的问题。 目标读者本书深入浅出地介绍了Redis相关知识,因此可以作为Redis新手的入门教程,同时本书凝聚了两位笔者在Red
本书作者来自一线开发团队,深入分析并总结了实际工作中遇到的“陷阱”,以及背后的原因, 包含大规模集群开发与管理的场景、案例、技巧,为高效开发运维提供了大量实际经验和建议。本书不要求读者有任何Redis使用经验,对入门与进阶DevOps的开发者提供有价值的帮。
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格