Redis作为基于键值对的Nosql数据库,具有高性能、丰富的数据结构、持久化、高可用、分布式等特性,同时Redis本身非常稳定,已经得到业界的广泛认可和使用。因此,作为一个Java开发者,掌握Redis早就成了一项必备技能之一。
今天,想跟大家分享这份被圈内大佬认为最NB的Redis宝典,关注到了Redis开发方方面面,尤其是对于开发中如何提高效率,减少可能遇到的问题进行详细分析,不单单介绍怎么解决这些问题,而是通过对Redis重要原理的解析,帮助开发人员学会找到问题的方法,理解背后的原理,从而让开发人员不仅知其然,而且知其所以然。因此,也收获了圈内大佬的一致好评。
第1章 初识Redis
初识Redis,带领读者进入Redis的世界,了解它的前世今生、众多特性、应用场景、安装配置、简单使用,最后对Redis发展过程中的重要版本进行说明,可以让读者对Redis有一个全面的认识。
1.1Redis特性
1.2Redis使用场景
1.3用好Redis的建议
1.4正确安装并启动Redis
1.5Redis重大版本
第2章 API的理解和使用
API的理解和使用,全面介绍了Redis提供的5种数据结构字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(zset)的数据模型、常用命令、典型应用场景,并且每个小节都会给出在Redis开发过程可能要注意的坑和技巧。同时本章还会对Redis的单线程处理机制、键值管理做一个全面介绍,通过对这些原理的理解,读者可以在合适的应用场景选择合适的数据结构和命令进行开发,有效提高程序效率,降低可能产生的问题和隐患。
2.1 预备
2.2 字符串
2.3 哈希
2.4 列表
2.5 集合
2.6 有序集合
2.7 键管理
第3章 小功能大用处
小功能大用处,除了5种数据结构外,Redis还提供了诸如慢查询、Redis Shell、Pipeline、Lua脚本、Bitmaps、HyperLogLog、发布订阅、GEO等附加功能,在这些功能的帮助下,Redis的应用场景更加丰富。
3.1 慢查询分析
3.2 Redis Shell
3.3 Pipeline
3.4 事务与Lua
3.5 Bitmaps
3.6 HyperLogLog
3.7 发布订阅
3.8 GEO
第4章 客户端
客户端,本章重点关注Redis客户端的开发,介绍了Redis的客户端通信协议、详细讲解了Java客户端Jedis的使用技巧,同时通过从原理角度剖析在开发运维中,客户端的监控和管理技巧,最后给出客户端开发中常见问题以及案例讲解。
4.1 客户端通信协议
4.2 Java客户端Jedis
4.3 Python客户端redis-py
4.4 客户端管理
4.5 客户端常见异常
4.6 客户端案例分析
第5章 持久化
持久化,Redis的持久化功能有效避免因进程退出造成的数据丢失问题,本章首先介绍RDB和AOF两种持久化配置和运行流程,其次对常见的持久化问题进行定位和优化,最后结合Redis常见的单机多实例部署场景进行优化。
5.1 RDB
5.2 AOF
5.3 问题定位与优化
5.4 多实例部署
第6章 复制
复制,在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,用于故障恢复和负载均衡等需求,Redis也是如此。它为我们提供了复制(replication)功能,实现了多个相同数据的Redis副本。复制功能是高可用Redis的基础,后面章节的哨兵和集群都是在复制的基础上实现高可用。
6.1 配置
6.2 拓扑
6.3 原理
6.4 开发与运维中的问题
第7章 Redis的噩梦:阻塞
阻塞,Redis是典型的单线程架构,所有的读写操作都在一条主线程中完成的。当Redis用于高并发场景时这条线程就变成了它的生命线。如果出现阻塞哪怕是很短时间对于我们的应用来说都是噩梦。导致阻塞问题的场景大致分为内在原因和外在原因,本章将进行详细分析。
7.1 发现阻塞
7.2 内在原因
7.3 外在原因
第8章 理解内存
理解内存,Redis所有的数据存在于内存中,如何高效利用Redis内存变得非常重要。高效利用Redis内存首先需要理解Redis内存消耗在哪里,如何管理内存,最后再深入到如何优化内存。掌握这些知识后相信读者能够实现用更少的内存存储更多的数据从而降低成本。
8.1 内存消耗
8.2 内存管理
8.3 内存优化
第9章 哨兵
哨兵,Redis从2.8版本开始正式提供了Redis Sentinel,它有效解决了主从复制模式下故障转移的若干问题,为Redis提供了高可用功能。本章将一步步解析Redis Sentinel的相关概念、安装部署、配置、命令使用、原理解析,最后分析了Redis Sentinel运维中的一些问题。
9.1 基本概念
9.2 安装和部署
9.3 API
9.4 客户端连接
9.5 实现原理
9.6 开发与运维中的问题
第10章 集群
集群,是本书的重头戏,Redis Cluster是Redis3提供的Redis分布式解决方案,有效解决了Redis分布式方面的需求,理解应用好RedisCluster将极大的解放我们对分布式Redis的需求,同时它也是学习分布式存储的绝佳案例。本章将针对RedisCluster的数据分布,搭建集群,节点通信,请求路由,集群伸缩,故障转移等方面进行分析说明。
10.1 数据分布
10.2 搭建集群
10.3 节点通信
10.4 集群伸缩
10.5 请求路由
10.6 故障转移
10.7 集群运维
第11章 缓存设计
缓存能够有效加速应用的读写速度,以及降低后端负载,对于开发人员进行日常应用的开发至关重要,但是将缓存加入应用架构后也会带来一些问题,本章将介绍缓存使用和设计中遇到的问题,具体包括:缓存的收益和成本、缓存更新策略、缓存粒度控制、穿透问题优化、无底洞问题优化、雪崩问题优化、热点key优化。
11.1 缓存的收益和成本
11.2 缓存更新策略
11.3 缓存粒度控制
11.4 穿透优化
11.5 无底洞优化
11.6 雪崩优化
11.7 热点key重建优化
第12章 开发运维的“陷阱”
介绍Redis开发运维中的一些棘手问题,具体包括:Linux配置优化、flush误操作数据恢复、如何让Redis变得安全、bigkey问题、热点key问题。
12.1 Linux配置优化
12.2 flushall/flushdb误操作
12.3 安全的Redis
12.4 处理bigkey
12.5 寻找热点key
第13章 Redis监控运维云平台CacheCloud
Redis监控运维云平台CacheCloud,介绍笔者所在团队开源的Redis运维工具CacheCloud,它有效解决了Redis监控和运维中的一些问题,本章将按照快速部署、机器部署、接入应用、用户功能、运维功能多个维度全面的介绍CacheCloud,相信在它的帮助下,读者可以更好的监控和运维好Redis。
13.1 CacheCloud是什么
13.2 快速部署
13.3 机器部署
13.4 接入应用
13.6 运维功能
13.7 客户端上报
第14章 Redis配置统计字典
Redis配置统计字典,会对Redis的系统状态信息以及全部配置做一个全面的梳理,希望本章能够成为Redis配置统计字典,协助大家分析和解决日常开发和运维中遇到的问题。
14.1 info系统状态说明
14.2 standalone配置说明和分析
14.3 Sentinel配置说明和分析
14.4 Cluster配置说明和分析
最后
笔记深入浅出地介绍了Redis相关知识,因此可以作为Redis新手的入门教程,对于需要进
一步提高Redis开发运维能力的读者也非常适合。