左手 MongoDB,右手 Redis — 從入門到商業實戰

謝乾坤

  • 出版商: 電子工業
  • 出版日期: 2019-01-31
  • 售價: $474
  • 貴賓價: 9.5$450
  • 語言: 簡體中文
  • 頁數: 340
  • ISBN: 7121358808
  • ISBN-13: 9787121358807
  • 相關分類: NoSQLMongoDBKey-Value Store
  • 立即出貨 (庫存 < 4)

買這商品的人也買了...

商品描述

本書針對MongoDB和Redis這兩個主流的NoSQL數據庫編寫,採用“理論+實踐”的形式編寫,共計45個實例。

全書共分為4篇:

第1篇,介紹了什麼是NoSQL、MongoDB和Redis相對於傳統關係型數據庫的優勢;

第2篇,介紹了MongoDB與Redis的安裝方法和基礎操作,並使用員工信息管理系統和聊天室網站實踐MongoDB和Redis。

第3篇,介紹了MongoDB與Redis的高級語法和應用;

第4篇,使用MongoDB與Redis完整開發一個問答網站並逐步優化,是對前面知識的綜合應用。

本書配有同步教學視頻。能幫助讀者快速而全面地了解每章的內容。本書還免費提供所有實例的源代碼及素材。這些代碼和素材不僅能方便讀者學習,而且也能為以後的工作提供便利。

本書結構清晰、案例豐富、通俗易懂、實用性強。特別適合MongoDB和Redis的初學者與進階讀者作為自學教程。

另外,本書也適合社會培訓學校作為培訓教材,還適合大中專院校的相關專業作為教學參考書。

目錄大綱

●第1篇  基础知识
-
第1章  进入MongoDB与Redis的世界    2
1.1  非关系型数据库的产生背景与分类    2
╰1.1.1  关系型数据库遇到的问题    2
╰1.1.2  非关系型数据库的分类及特点    2
1.2  MongoDB与Redis可以做什么    3
╰1.2.1  MongoDB适合做什么    3
╰1.2.2  Redis适合做什么    3
1.3  如何学习MongoDB和Redis    4
╰1.3.1  项目驱动,先用再学    4
╰1.3.2  系统梳理,由点到面    4
╰1.3.3  分清主次,不要在无谓的操作中浪费时间    5
╰1.3.4  在不同领域中尝试    5
1.4  如何使用本书    5
╰1.4.1  本书的产品定位    5
╰1.4.2  本书适用的读者群体    6
╰1.4.3  如何利用本书实例进行练习    6
-
第2章  数据存储方式的演进    8
2.1  从文件到MongoDB数据库    8
╰2.1.1  使用文件保存数据    8
╰2.1.2  使用MongoDB保存数据    9
2.2  从队列Queue到Redis    9
╰2.2.1  了解“生产者/消费者”模型    9
╰2.2.2  实例1:使用Python实现队列    10
╰2.2.3  Python的Queue及其缺陷    12
╰2.2.4  实例2:使用Redis替代Queue    12
本章小结    14
-
●第2篇  快速入门
-
第3章  MongoDB 快速入门    16
3.1  MongoDB和SQL术语对比    16
3.2  安装MongoDB    16
╰3.2.1  在Windows中安装    16
╰3.2.2  在Linux中安装    19
╰3.2.3  在macOS中安装    21
3.3  MongoDB的图形化管理软件——Robo 3T    25
╰3.3.1  安装    25
╰3.3.2  认识Robo 3T的界面    28
3.4  MongoDB的基本操作    29
╰3.4.1  实例3:创建数据库与集合,写入数据    29
╰3.4.2  实例4:查询数据    36
╰3.4.3  实例5:修改数据    46
╰3.4.4  实例6:删除数据    47
╰3.4.5  实例7:数据去重    49
3.5  使用Python操作MongoDB    51
╰3.5.1  连接数据库    51
╰3.5.2  MongoDB命令在Python中的对应方法    53
╰3.5.3  实例8:插入数据到MongoDB    55
╰3.5.4  实例9:从MongoDB中查询数据    55
╰3.5.5  实例10:更新/删除MongoDB中的数据    56
3.6  MongoDB与Python不通用的操作    58
本章小结    64
-
第4章  实例11:用MongoDB开发员工信息管理系统    65
4.1  了解实例最终目标    65
4.2  准备工作    69
╰4.2.1  了解文件结构    69
╰4.2.2  搭建项目运行环境    69
╰4.2.3  启动项目    72
4.3  项目开发过程    74
╰4.3.1  生成初始数据    74
╰4.3.2  实现“查询数据”功能    75
╰4.3.3  实现“添加数据”功能    79
╰4.3.4  实现“更新数据”功能    83
╰4.3.5  实现“删除数据”功能    85
本章小结    88
-
第5章  Redis快速入门    89
5.1  安装Redis    89
╰5.1.1  在Windows中安装Redis    89
╰5.1.2  在Linux中安装Redis    91
╰5.1.3  在macOS中安装Redis    92
╰5.1.4  在线测试环境    93
5.2  字符串的创建、查询和修改    94
╰5.2.1  使用redis-cli实现    94
╰5.2.2  使用Python实现    99
╰5.2.3  字符串的应用    103
5.3  列表的创建、查询和修改    105
╰5.3.1  使用redis-cli实现    105
╰5.3.2  使用Python实现    110
╰5.3.3  列表的应用    116
5.4  集合的创建和修改    118
╰5.4.1  使用redis-cli实现    118
╰5.4.2  使用Python实现    127
╰5.4.3  集合的应用    132
本章小结    133
-
第6章  实例12:用Redis开发一个聊天室    134
6.1  了解实例的最终目标    134
6.2  准备工作    135
╰6.2.1  了解文件结构    135
╰6.2.2  搭建项目运行环境    136
6.3  项目开发过程    139
╰6.3.1  实现登录功能1:创建Redis的连接实例    139
╰6.3.2  实现登录功能2:实现“检查昵称是否重复”功能    141
╰6.3.3  实现登录功能3:实现“设置和获取Token”功能    142
╰6.3.4  实现聊天室页面1:实现“获取聊天消息”功能    145
╰6.3.5  实现聊天室页面2:实现“发送新信息”功能    148
╰6.3.6  实现聊天室页面3:设定“刷屏检查字符串”    151
╰6.3.7  实现聊天室页面4:读取刷屏限制的剩余时间    153
本章小结    154
-
●第3篇  高级应用
-
第7章  MongoDB的高级语法    156
7.1  AND和OR操作    156
╰7.1.1  实例13:查询同时符合两个条件的人(AND操作)    156
╰7.1.2  实例14:查询只符合其中任一条件的人(OR操作)    159
╰7.1.3  实例15:用Python实现MongoDB的AND与OR操作    162
7.2  查询子文档或数组中的数据    163
╰7.2.1  认识嵌入式文档    163
╰7.2.2  实例16:嵌入式文档的应用    164
╰7.2.3  认识数组字段    167
╰7.2.4  实例17:数组应用——查询数组包含与不包含“??”的数据    168
╰7.2.5  实例18:数组应用——根据数组长度查询数据    170
╰7.2.6  实例19:数组应用——根据索引查询数据    170
╰7.2.7  Python操作嵌入式文档与数组字段    172
7.3  MongoDB的聚合查询    173
╰7.3.1  聚合的基本语法    173
╰7.3.2  实例20:筛选数据    174
╰7.3.3  实例21:筛选与修改字段    177
╰7.3.4  实例22:分组操作    184
╰7.3.5  实例23:拆分数组    191
╰7.3.6  实例24:联集合查询    193
╰7.3.7  实例25:使用Python执行聚合操作    204
本章小结    205
-
第8章  MongoDB的优化和安全建议    206
8.1  提高MongoDB读写性能    206
╰8.1.1  实例26:“批量插入”与“逐条插入”数据,比较性能差异    206
╰8.1.2  实例27:“插入”与“更新”数据,比较性能差异    214
╰8.1.3  实例28:使用“索引”提高查询速度    217
╰8.1.4  实例29:引入Redis,以降低MongoDB的读取频率    218
╰8.1.5  实例30:增添适当冗余信息,以提高查询速度    219
8.2  提高MongoDB的安全性    221
╰8.2.1  配置权限管理机制    221
╰8.2.2  开放外网访问    230
本章小结    233
-
第9章  Redis的高级数据结构    234
9.1  哈希表的功能和应用    234
╰9.1.1  实例31:使用Redis记录用户在线状态    234
╰9.1.2  实例32:使用Python向哈希表中添加数据    239
╰9.1.3  实例33:使用Python从哈希表中读取数据    241
╰9.1.4  实例34:使用Python判断哈希表中是否存在某字段,并获取字段数量    244
╰9.1.5  实例35:在Redis交互环境redis-cli中读/写哈希表    245
9.2  发布消息/订阅频道    247
╰9.2.1  实例36:实现一对多的消息发布    247
╰9.2.2  实例37:在Python中发布消息/订阅频道    252
╰9.2.3  实例38:在redis-cli中发布消息/订阅频道    254
9.3  有序集合    255
╰9.3.1  实例39:实现排行榜功能    256
╰9.3.2  实例40:使用Python读写有序集合    258
╰9.3.3  实例41:在Redis交互环境redis-cli中使用有序集合    264
9.4  Redis的安全管理    266
╰9.4.1  实例42:设置密码并开放外网访问    266
╰9.4.2  禁用危险命令    269
本章小结    269
-
●第4篇  商业实战
-
第10章  实例43:搭建一个类似“知乎”的问答网站    272
10.1  了解实例的最终目标    272
10.2  准备工作    274
╰10.2.1  了解文件结构    274
╰10.2.2  搭建实例运行环境    275
╰10.2.3  运行项目    276
10.3  项目开发过程    278
╰10.3.1  生成初始数据    278
╰10.3.2  实现“查询问题列表”功能    279
╰10.3.3  实现“查询回答”功能    281
╰10.3.4  实现“提问与回答”功能    282
╰10.3.5  实现“点赞”与“点踩”功能    283
本章小结    284
-
第11章  实例44:使用Redis存储网站会话(接第10章实例)    285
11.1  了解实例的最终目标    285
╰11.1.1  注册账号    285
╰11.1.2  登录后回答问题    287
╰11.1.3  修改回答    287
╰11.1.4  用户回答同一个问题的次数    287
╰11.1.5  修改提问    288
11.2  准备工作    288
╰11.2.1  了解文件结构    288
╰11.2.2  搭建项目运行环境    290
╰11.2.3  运行实例    290
11.3  开发过程    292
╰11.3.1  会话管理的基本原理    292
╰11.3.2  保存与读取用户信息    294
╰11.3.3  更新问题和回答    295
╰11.3.4  检查用户名是否已经注册    295
╰11.3.5  在Redis中储存与删除Session    295
╰11.3.6  从Redis中获取Session    296
╰11.3.7  记录和检查“用户回答是否回答了某个问题”    297
本章小结    297
-
第12章  实例45:大规模验重和问答排序(接第11章实例)    298
12.1  了解实例的最终目标    298
╰12.1.1  账号验重    298
╰12.1.2  动态排序    299
╰12.1.3  注销登录功能    299
╰12.2.4  翻页功能    300
12.2  准备工作    300
╰12.2.1  了解文件结构    300
╰12.2.2  搭建项目运行环境    302
╰12.2.3  运行项目    302
12.3  开发过程    304
╰12.3.1  了解“布隆过滤器”的基本原理    304
╰12.3.2  使用“布隆过滤器”对注册用户进行验重    308
╰12.3.3  让“问题”与“回答”根据点赞数动态排序    311
本章小结    317
-
第13章  重构和优化    319
13.1  划分代码层次    319
╰13.1.1  寻找问题    319
╰13.1.2  如何重构    321
13.2  MongoDB的常见陷阱    322
╰13.2.1  默认超时时间    322
╰13.2.2  硬盘空间的使用    325
13.3  使用Redis的注意事项    326
╰13.3.1  “多Redis实例”与“单Redis实例多数据库”的差异    326
╰13.3.2  尽可能为每个Key设置过期时间    328
本章小结    329