Table of contents Dive-into-Redis NoSQL和传统数据库有什么区别? Redis特性 Redis可以做什么 下载与安装 redis在线练习 直接下载 Docker 登陆Redis数据库 可视化工具 应用场景 API理解与使用 全局命令1 全局命令2 数据类型 string(字符串) 设置值 获取值 批量设置值 批量获取值 计数 追加值 字符串长度 设置并返回原值 设置指定位置的字符 获取部分字符串 字符串命令总结 使用场景 hash(哈希) 设置值 获取值 删除field 计算field个数 批量设置或获取field-value 判断field是否存在 获取所有field 获取所有value 获取所有的field-value 计算value的字符串长度 哈希命令总结 使用场景 list(列表) 从右边插入元素 从左边插入元素 向某个元素前或者后插入元素 获取指定范围内的元素列表 获取列表指定索引下标的元素 获取列表长度 从列表左侧弹出元素 从列表右侧弹出元素 删除指定元素 按照索引范围修剪列表 修改元素 阻塞操作 列表命令总结 使用场景 set(集合) 添加元素 删除元素 计算元素个数 判断元素是否在集合中 随机从集合返回指定个数元素 从集合随机弹出元素 获取所有元素 求多个集合的交集 求多个集合的并集 求多个集合的差集 将交集、并集、差集的结果保存 集合命令总结 使用场景 zset(有序集合) 添加成员 计算成员个数 计算某个成员的分数 计算成员的排名 删除成员 增加成员的分数 返回指定排名范围的成员 返回指定分数范围的成员 返回指定分数范围成员个数 删除指定排名内的升序元素 删除指定分数范围的成员 交集 并集 有序集合命令总结 使用场景 数据结构与对象 简单动态字符串 链表 字典 跳表 整数集合 压缩列表 进阶功能 慢查询分析 最佳实践 Pipeline 原生批量命令与Pipeline对比 最佳实践 事务与Lua 事务 Lua用法简述 Bitmap 发布订阅 命令 使用场景 GEO 持久化 持久化 RDB AOF 问题定位与优化 多实例部署 复制 复制 配置 拓扑 原理 开发与运维中的问题 读写分离 主从配置不一致 规避全量复制 规避复制风暴 阻塞 阻塞 发现阻塞 内在原因 外在原因 内存 理解内存 内存消耗 内存管理 内存优化 哨兵 基本概念 安装和部署 部署拓扑结构 部署Redis数据节点 部署Sentinel节点 配置优化 部署技巧 API 集群操作 集群简介 数据分布 数据分布理论 Redis数据分区 集群功能限制 搭建集群 节点握手 分配槽 用redis-trib.rb搭建集群 节点通信 通信流程 Gossip消息 节点选择 集群伸缩 伸缩原理 扩容集群 收缩集群 请求路由 缓存设计 缓存设计 缓存的收益和成本 缓存更新策略 缓存粒度控制 开发运维的“陷阱” 开发运维的“陷阱” Linux配置优化 内存分配控制 Redis监控运维云平台 Redis监控运维云平台CacheCloud CacheCloud是什么 现有问题 CacheCloud基本功能 快速部署 redis-manager 常见问题 参考文献