[201902][左手 MongoDB,右手 Redis][从入门到商业实战][谢乾坤][编著]
配套源代码:https://github.com/kingname/SourceCodeofMongoRedis
配套视频:https://www.yuque.com/kingname/wtago8/xwg3gb
第 1 篇 基础知识
第 1 章 进入 MongoDB 与 Redis 的世界
1.1 非关系型数据库的产生背景与分类
1.1.1 关系型数据库遇到的问题
1.1.2 非关系型数据库的分类及特点
1.2 MongoDB 与 Redis 可以做什么
1.2.1 MongoDB 适合做什么
1.2.2 Redis 适合做什么
1.3 如何学习 MongoDB 和 Redis
1.3.1 项目驱动,先用再学
1.3.2 系统梳理,由点到面
1.3.3 分清主次,不要在无畏的操作中浪费时间
1.3.4 在不同领域中尝试
1.4 如何使用本书
1.4.1 本书的产品定位
1.4.2 本书适用的读者群体
1.4.3 如何利用本书实例进行练习
本章小结
第 2 章 数据存储方式的演进
2.1 从文件到 MongoDB 数据库
2.1.1 使用文件保存数据
2.1.2 使用 MongoDB 保存数据
2.2 从队列 Queue 到 Redis
2.2.1 了解“生产者/消费者”模型
2.2.2 实例 1:使用 Python 实现队列
2.2.3 Python 的 Queue 及其缺陷
2.2.4 案例 2:使用 Redis 替代 Queue
本章小结
第 2 篇 快速入门
第 3 章 MongoDB 快速入门
3.1 MongoDB 和 SQL 术语对比
3.2 安装 MongoDB
3.2.1 在 Windows 中安装
3.2.2 在 Linux 中安装
3.2.3 在 macOS 中安装
3.3 MongoDB 的图形化管理软件 – Robo 3T
3.3.1 安装
3.3.2 认识 Robo 3T 的界面
3.4 MongoDB 的基本操作
3.4.1 实例 3:创建数据库与集合,写入数据
3.4.2 实例 4:查询数据
3.4.3 实例 5:修改数据
3.4.4 实例 6:删除数据
3.4.5 实例 7:数据去重
3.5 使用 Python 操作 MongoDB
3.5.1 连接数据库
3.5.2 MongoDB 命令在 Python 中的对应方法
3.5.3 实例 8:插入数据到 MongoDB
3.5.4 实例 9:从 MongoDB 中查询数据
3.5.5 实例 10:更新/删除 MongoDB 中的数据
3.6 MongoDB 与 Python 不通用的操作
本章小结
第 4 章 实例 11:用 MongoDB 开发员工信息管理系统
4.1 了解实例最终目标
4.2 准备工作
4.2.1 了解文件结构
4.2.2 搭建项目运行环境
4.2.3 启动项目
4.3 项目开发过程
4.3.1 生成初始数据
4.3.2 实现“查询数据”功能
4.3.3 实现“添加数据”功能
4.3.4 实现“更新数据”功能
4.3.5 实现“删除数据”功能
本章小结
第 5 章 Redis 快速入门
5.1 安装 Redis
5.1.1 在 Windows 中安装 Redis
5.1.2 在 Linux 中安装 Redis
5.1.3 在 macOS 中安装 Redis
5.1.4 在线测试环境
5.2 字符串的创建、查询和修改
5.2.1 使用 redis-cli 实现
5.2.2 使用 Python 实现
5.2.3 字符串的应用
5.3 列表的创建、查询和修改
5.3.1 使用 redis-cli 实现
5.3.2 使用 Python 实现
5.3.3 列表的应用
5.4 集合的创建和修改
5.4.1 使用 redis-cli 实现
5.4.2 使用 Python 实现
5.4.3 集合的应用
本章小结
第 6 章 实例 12:用 Redis 开发一个聊天室网站
6.1 了解实例的最终目标
6.2 准备工作
6.2.1 了解文件结构
6.2.2 搭建项目运行环境
6.3 项目开发过程
6.3.1 实现登录功能 1:创建 Redis 连接实例
6.3.2 实现登录功能 2:实现“检查昵称是否重复”功能
6.3.3 实现登录功能 3:实现“设置和获取 Token”功能
6.3.4 实现聊天室页面 1:实现“获取聊天消息”功能
6.3.5 实现聊天室页面 2:实现“发送新信息”功能
6.3.6 实现聊天室页面 3:设定“刷屏检查字符串”
6.3.7 实现聊天室页面 4:读取刷屏限制的剩余时间
本章小结
第 3 篇 高级应用
第 7 章 MongoDB 的高级语法
7.1 AND 和 OR 操作
7.1.1 实例 13:查询同时符合两个条件的人(AND 操作)
7.1.2 实例 14:查询只符合其中任一条件的人(OR 操作)
7.1.3 实例 15:用 Python 实现 MongoDB 的 AND 与 OR 操作
7.2 查询子文档或数组中的数据
7.2.1 认识嵌入式文档
7.2.2 实例 16:嵌入式文档的应用
7.2.3 认识数组字段
7.2.4 实例 17:数组应用 - 查询数组包含与不包含“xx”的数据
7.2.5 实例 18:数组应用 - 根据数组长度查询数据
7.2.6 实例 19:数组应用 - 根据索引查询数据
7.2.7 Python 操作嵌入式文档与数组字段
7.3 MongoDB 的聚合查询
7.3.1 聚合的基本语法
7.3.2 实例 20:筛选数据
7.3.3 实例 21:筛选与修改字段
7.3.4 实例 22:分组操作
7.3.5 实例 23:拆分数组
7.3.6 实例 24:联集合查询
7.3.7 实例 25:使用 Python 执行聚合操作
本章小结
第 8 章 MongoDB 的优化和安全建议
8.1 提高 MongoDB 读写性能
8.1.1 实例 26:“批量插入”与“逐条插入”数据,比较性能差异
8.1.2 实例 27:“插入”与“更新”数据,比较性能差异
8.1.3 实例 28:使用“索引”提高查询速度
8.1.4 实例 29:引入 Redis,以降低 MongoDB 的读取频率
8.1.5 实例 30:增添适当冗余信息,以提高查询速度
8.2 提高 MongoDB 的安全性
8.2.1 配置权限管理机制
8.2.2 开放外网访问
本章小结
第 9 章 Redis 的高级数据结构
9.1 哈希表的功能和应用
9.1.1 实例 31:使用 Redis 记录用户在线状态
9.1.2 实例 32:使用 Python 向哈希表中添加数据
9.1.3 实例 33:使用 Python 从哈希表中读取数据
9.1.4 实例 34:使用 Python 判断哈希表中是否存在某字段,并获取字段数量
9.1.5 实例 35:在 Redis 交互环境 redis-cli 中读/写哈希表
9.2 发布消息/订阅频道
9.2.1 实例 36:实现一对多的消息发布
9.2.2 实例 37:在 Python 中发布消息/订阅频道
9.2.3 实例 38:在 redis-cli 中发布消息/订阅频道
9.3 有序集合
9.3.1 实例 39:实现排行榜功能
9.3.2 实例 40:使用 Python 读写有序集合
9.3.3 实例 41:在 Redis 交互环境 redis-cli 中使用有序集合
9.4 Redis 的安全管理
9.4.1 实例 42:设置密码并开放外网访问
9.4.2 禁用危险命令
本章小结
第 4 篇 商业实战
第 10 章 实例 43:搭建一个类似“知乎”的问答网站
10.1 了解实例的最终目标
10.2 准备工作
10.2.1 了解文件结构
10.2.2 搭建实例运行环境
10.2.3 运行项目
10.3 项目开发过程
10.3.1 生成初始数据
10.3.2 实现“查询问题列表”功能
10.3.3 实现“查询回答”功能
10.3.4 实现“提问与回答”功能
10.3.5 实现“点赞”与“点踩”功能
本章小结
第 11 章 实例 44:使用 Redis 存储网站会话(接第 10 章实例)
11.1 了解实例的最终目标
11.1.1 注册账号
11.1.2 登录后回答问题
11.1.3 修改回答
11.1.4 用户回答同一个问题的次数
11.1.5 修改提问
11.2 准备工作
11.2.1 了解文件结构
11.2.2 搭建项目运行环境
11.2.3 运行实例
11.3 开发过程
11.3.1 会话管理的基本原理
11.3.2 保存与读取用户信息
11.3.3 更新问题和回答
11.3.4 检查用户名是否已经注册
11.3.5 在 Redis 中存储与删除 Session
11.3.6 从 Redis 中获取 Session
11.3.7 记录和检查“用户回答是否回答了某个问题”
第 12 章 实例 45:大规模验重和问答排序(接第 11 章实例)
12.1 了解实例的最终目标
12.1.1 账号验重功能
12.1.2 动态排序功能
12.1.3 注销登录功能
12.2.4 翻页功能
12.2 准备工作
12.2.1 了解文件结构
12.2.2 搭建项目运行环境
12.2.3 运行项目
12.3 开发过程
12.3.1 了解“布隆过滤器”的基本原理
12.3.2 使用“布隆过滤器”对注册用户进行验重
12.3.3 让“问题”与“回答”根据点赞数动态排序
本章小结
第 13 章 重构和优化
13.1 划分代码层次
13.1.1 寻找问题
13.1.2 如何重构
13.2 MongoDB 的常见陷阱
13.2.1 默认超时时间
13.2.2 硬盘空间的使用
13.3 使用 Redis 的注意事项
13.3.1 “多 Redis 实例”与“单 Redis 实例多数据库”的差异
13.3.2 尽可能为每个 Key 设置过期时间
本章小结