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

謝乾坤

  • 出版商: 電子工業
  • 出版日期: 2019-01-31
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 頁數: 340
  • ISBN: 7121358808
  • ISBN-13: 9787121358807
  • 相關分類: NoSQLMongoDBKey-Value Store
  • 立即出貨

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

相關主題

商品描述

本書針對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