左手MongoDB,右手Redis——从入门到商业实战(txt+pdf+epub+mobi电子书下载)

作者:谢乾坤

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

左手MongoDB,右手Redis——从入门到商业实战

左手MongoDB,右手Redis——从入门到商业实战试读:

前言

关注以下公众号,回复“数据库”,可获得教学视频、实例素材、实例源代码。

MongoDB与Redis的应用越来越广泛。在Python语言的辅助下,MongoDB与Redis变得极其简单易学,其学习曲线平滑且学习周期短。读者只需要花费比较短的时间,就可以学会开发基于MongoDB与Redis的应用。

本书使用通俗易懂的语言进行讲解,从基础操作到高级应用,再到基于MongoDB与Redis开发多个网站。

本书具有以下特点。1.免费提供教学视频

作者按照图书的内容和结构,录制了对应的教学视频。2.可加入本书QQ学习群提问、交流

读者可加入本书QQ学习群(705161389)与上千人成为同学,共享资源。3.通过45个实例进行讲解

本书提供了45个实例,将理论讲解最终都落实到代码实现上。而且,这些实例会伴随着本书内容的推进,不断地趋近于工程化的项目风格,具有很高的应用价值。4.免费提供实例素材

书中实例用到的素材已经提供,如图1所示。读者可以通过这些素材完全再现书中的实例效果。图1 本书实例用到的素材5.免费提供实例的源代码

读者可以一边阅读本书,一边参照源代码动手练习。这样不仅能提高学习的效率,还能对书中的知识有更加直观的认识,从而逐渐培养自己的编码能力。6.覆盖的知识面广

本书囊括了 MongoDB 与 Redis 的大部分功能。读者在系统学习之后,可以把本书当成MongoDB与Redis的工具书长期保留在身边。无论何时何地,只要遇到生僻的操作,都可以及时找到说明。7.采用短段、短句,便于流畅阅读

本书采用丰富的层次,并采用简洁的段落和语句,所以,本书读来有顺水行舟的轻快感。8.实例的商业性、应用性强

本书提供的实例多数来源于真正的商业项目,具有很高的参考价值,有的代码甚至可以直接被移植到实际的项目中,进行重复使用,让“从学到用”这个过程变得更加直接。

感谢各位读者选择了本书!希望本书能对读者的学习有所助益。

虽然我们对书中所述内容都尽量核实并多次进行文字校对,但因时间紧张,加之水平所限,书中难免有疏漏和错误之处,敬请广大读者批评并指正。

联系编辑请发E-mail到wuhongwei@phei.com.cn。谢乾坤2018年11月第1篇 基础知识随着大数据时代的到来,数据急速增长,导致关系型数据库(SQL)越来越不够用。高性能、可扩展的数据库变得越来越重要起来。在这样的场景下,非关系型数据库(NoSQL)应运而生。这里的“NoSQL”不是“No SQL(不是SQL)”,而是“Not only SQL(不仅是SQL)”的简称。第1章主要介绍数据库的产生背景和功能,以及如何学习它们。第2章通过实例介绍MongoDB与Redis存在的必要性。第1章 进入MongoDB与Redis的世界

非关系型数据库在如今的大数据环境下越来越受到重用。相比传统的关系型数据库,非关系型数据库在越来越多的使用场景下极大地提升了生产力。

非关系型数据库的佼佼者——文档型数据库MongoDB与键值数据库Redis,是这本书的两个主角。1.1 非关系型数据库的产生背景与分类1.1.1 关系型数据库遇到的问题

2008年左右,网站、论坛、社交网络开始高速发展,关系型数据库的地位受到了很大的挑战。

关系型数据库的以下问题逐渐凸显:

● 难以应付每秒上万次的高并发数据写入。

● 查询上亿量级数据的速度极其缓慢。

● 分库、分表形成的子库到达一定规模后难以进一步扩展。

● 分库、分表的规则可能会因为需求变更而发生变更。

● 修改表结构困难。

在很多互联网应用场景下,对数据联表的查询需求不是那么强烈,也并不需要在数据写入后立刻读取,但对数据的读取和并发写入速度有非常高的要求。在这样的情况下,非关系型数据库得到高速的发展。

2009年,分布式文档型数据库MongoDB引发了一场去SQL的浪潮。1.1.2 非关系型数据库的分类及特点

非关系型数据库主要分为以下几类。1.键值数据库

主要代表是Redis、Flare。

这类数据库具有极高的读写性能,用于处理大量数据的高访问负载比较合适。2.文档型数据库

主要代表是MongoDB、CouchDB。

这类数据库满足了海量数据的存储和访问需求,同时对字段要求不严格,可以随意地增加、删除、修改字段,且不需要预先定义表结构,所以适用于各种网络应用。3.列存储数据库

主要代表是Cassandra、Hbase。

这类数据库查找速度快,可扩展性强,适合用作分布式文件存储系统。4.图数据库

主要代表是InfoGrid、Neo4J。

这类数据库利用“图结构”的相关算法,适合用于构建社交网络和推荐系统的关系图谱。1.2 MongoDB与Redis可以做什么1.2.1 MongoDB适合做什么

MongoDB适合储存大量关联性不强的数据。

MongoDB中的数据以“库”—“集合”—“文档”—“字段”结构进行储存。这种结构咋看和传统关系型数据库的“库”—“表”—“行”—“列”结构非常像。但是,MongoDB不需要预先定义表结构,数据的字段可以任意变动,并发写入速度也远远超过传统关系型数据库。1.2.2 Redis适合做什么

Redis有多种数据结构,适合多种不同的应用场景。1.使用Redis做缓存

Redis的字符串、哈希表两种数据结构适合用来储存大量的键值对信息,从而实现高速缓存。2.使用Redis做队列

Redis有多几种数据结构适于做队列:

● 使用“列表”数据结构,可以实现普通级和优先级队列的功能。

● 使用“有序集合”数据结构,可以实现优先级队列;

● 使用“哈希表”数据结构,可以实现延时队列。3.使用Redis去重

Redis有多几种数据结构适于做去重:

● 利用“集合”数据结构,可以实现小批量数据的去重;

● 利用“字符串”数据结构的位操作,可以实现布隆过滤器,从而实现超大规模的数据去重;

● 利用Redis自带的HyperLogLog数据结构,可以实现超大规模数据的去重和计数。4.使用Redis实现积分板

Redis的“有序集合”功能可以实现积分板功能,还能实现自动排序、排名功能。5.使用Redis实现“发布/订阅”功能

Redis自带的“发布/订阅”模式可以实现多对多的“发布/订阅”功能。1.3 如何学习MongoDB和Redis

本节谈一谈如何学习MongoDB和Redis。1.3.1 项目驱动,先用再学“先看理论,再实做”的学习方法,最容易让人昏昏欲睡。如果先看理论,由于不知道具体的应用场景,学起来就难以抓住重点。

如果先给出一个项目,然后根据完成这个项目需要哪些知识点去针对性地学习,就能很容易找到重点,活学活用。在完成项目的同时,也就学好了知识点。1.3.2 系统梳理,由点到面

项目驱动也并非完美无缺。基于项目来学习,容易导致的问题是知识点零碎而不成系统。因此,在完成一个项目后,应对项目涉及的知识点进行系统性的学习。例如,聊天网站需要使用Redis的列表,那么在完成了聊天网站后,就应该详细了解Redis列表的其他命令。

又比如,在问答系统中需要使用 MongoDB 的联集合查询,那么在完成项目以后,应根据联集合查询用到的“aggregate”命令去了解 MongoDB 的聚合操作。在了解了聚合操作以后,再思考聚合操作的其他应用场景。1.3.3 分清主次,不要在无谓的操作中浪费时间

搭建环境是很多人学习的“拦路虎”。由于电脑环境的差异,可能有一些读者无论如何都无法在自己的电脑上把数据库运行起来。此时,千万不要恋战。赶紧重装系统、更换电脑、求助他人,或者使用别人已经搭建好的环境。

首先学会使用数据库,等基于MongoDB或者Redis的程序能够完美运行了,再来慢慢考虑环境搭建的问题。

至于MongoDB的分库、分表、集群,Redis的集群、哨兵等内容,除非你想成为数据库工程师,否则,可以等到熟练使用MongoDB和Redis后,再找大块空闲时间来了解。1.3.4 在不同领域中尝试

MongoDB与Redis在多个领域中都有重要的应用。例如:

● 在爬虫开发中,MongoDB主要用来写数据,Redis主要用来缓存网址。

● 在数据分析中,MongoDB的聚合操作用得较多。

● 在后端开发中,主要用到MongoDB的增、删、改、查功能,Redis主要用来做缓存。

● 在游戏开发中,Redis可以用来做排名功能。

如果希望更好地掌握MongoDB和Redis,那么可以在多个领域都寻找项目来进行尝试,从而更全面地了解各个功能和应用场景。1.4 如何使用本书1.4.1 本书的产品定位

本书旨在教会读者在不同应用场景下正确使用MongoDB和Redis的不同功能,不会介绍数据库的底层原理,也不会介绍如何优化数据,更不会介绍如何搭建数据库集群。

如果以开车作为比喻,学习开车不需要知道汽车的所有组成元件,也不需要知道汽车为什么踩下油门就可以跑,更不需要知道汽车是如何组装的。诚然,技艺高超的赛车手确实需要知道汽车的一些底层原理,但前提是要会开车,再来考虑如何开得好。

几乎找不到不用数据库的互联网公司。似乎在任何场景下都要用到数据库,但数据库绝不仅仅是保存数据那样简单,数据库的不同功能有不同的适用场景。如何在适当的场景下选择最适当的功能,正是本书需要教给读者的。

本书虽然也有数据库搭建的内容,但希望读者耗费在搭建数据库上的时间不要超过半小时。如果搭建遇到了问题,请立即咨询朋友、老师,或者使用学校或公司已经搭建好的数据库来进行学习。绝对不应该在搭建数据库上耗费太多时间。1.4.2 本书适用的读者群体

本书不适合希望成为数据库工程师的读者。

本书强调如何将MongoDB和Redis应到实际项目中,因此本书会使用编程语言Python来操作数据库,这就要求读者必须有Python基础。

如果读者对Python不熟悉,可以参考李金洪老师编著的《Python带我起飞——入门、进阶、商业实战》(电子工业出版社出版)一书。

本书适合有Python基础的后端工程师、爬虫工程师、数据工程师、数据科学家、数据挖掘工程师、游戏开发工程师等群体阅读学习。1.后端工程师

本书中涉及的网站是使用Flask开发的,后端工程师在学习了MongoDB与Redis知识后,可以参考本书的网站源代码举一反三,使用MongoDB与Redis来优化自己网站的后台代码,从而提高速度或者简化逻辑。2.爬虫工程师

MongoDB特别适合写入大批量、高并发、不规则的数据,Redis特别适合作为分布式爬虫的连接枢纽。爬虫工程师在学习了MongoDB与Redis后,可以大大提高爬虫的开发效率和运行效率。3.数据工程师、数据科学家、数据挖掘工程师

这个群体的读者,可以使用MongoDB来保存数据,并使用MongoDB的聚合查询功能来对数据进行一些基本的查询操作和清洗操作,从而输出格式较为规范的数据,以便进行进一步分析。4.游戏工程师

Redis特别适合用来存放一些中间数据。另外,Redis自带的一些数据结构天然适合用来实现游戏中的一些功能,例如积分板、去重、高速缓存等。1.4.3 如何利用本书实例进行练习

本书有大量的实例供读者练习。实例分为小型、中型和大型三种。1.小型实例

对于小型实例,读者可以根据书中的描述直接在MongoDB图形化管理软件、Redis交换环境或Python交互环境中进行操作。

这种实例包括(但不限于)MongoDB与Redis的基本语法、基本操作。2.中型实例

对于中型实例,由于需要完成较多的 Python 代码,因此需要在 Python 的集成开发环境(PyCharm等)中完成。

本书会为中型实例提供原始数据的生成程序。只要运行生成程序,就会在 MongoDB 或者Redis中写入练习专用的原始数据。然后,读者就可以操作这些原始数据进行学习。3.大型实例

对于大型的实例,本书会附送相应的代码(一个网站的所有源文件)。读者根据书中的使用说明,可以在自己电脑上将网站的运行环境搭建起来。

在项目环境能正常运行后,读者只需要完成项目中的MongoDB或Redis模块,就可以使整个网站按照预期的效果正常工作。第2章 数据存储方式的演进

对于小批量的数据,可以使用“记事本”程序将其保存到硬盘里。但如果数据量越来越多,类型越来复杂,使用“记事本”程序保存就难以查询和修改。数据库的出现,就是为了便于从大量数据中查询和修改内容。

在程序开发中,常常涉及一些中间数据,这些中间数据会被频繁读/写。如果仅仅把中间数据放在内存中,则不便于从外界观察程序运行到了什么状态。而把中间数据保存到基于硬盘的传统数据库,又会影响程序性能。内存数据库的出现,就解决了这个问题。2.1 从文件到MongoDB数据库2.1.1 使用文件保存数据

对于少量数据,可以使用“记事本”程序来保存。但如果需要对数据进行计算,那么记事本显然就不能胜任了。此时可以考虑 Excel。还可以使用 Excel 的数据透视表来统计数据,如图2-1所示。图2-1 使用数据透视表统计数据

Excel的一张表可以存放100万行左右的数据,那如果每天的数据都超过100万行呢?此时就不得不使用数据库来保存了。2.1.2 使用MongoDB保存数据

使用数据库,可以保存大量的数据,这是数据库最基本的功能。另外,数据库还能够对数据进行逻辑运算、数学运算、搜索、批量修改或删除。

相比于传统的关系型数据库,MongoDB对于每一次插入的字段格式没有要求,字段可以随意变动,字段类型也可以随意变动,如图2-2所示。图2-2 MongoDB对字段格式与内容不做限制

MongoDB可以并发插入上万条文档,这是传统关系型数据库所不能望其项背的。2.2 从队列Queue到Redis

在某些场景下,使用队列可以提高程序的运行性能,但如何选择合适的队列也需要仔细考虑。2.2.1 了解“生产者/消费者”模型

在餐馆吃饭时,厨师做完一道菜后就会把菜从传菜窗口递出去,然后继续做下一道菜。厨师不需要关心顾客是不是已经把菜吃完了。如果厨师做菜的速度大于顾客拿菜的速度,那么就会有越来越多的菜堆在传菜窗口。如果顾客拿菜的速度大于厨师做菜的速度,那么传菜窗口始终是空的,来一道菜就会立刻被拿走。

在程序开发中,这就是一个典型的“生产者/消费者”模型:厨师是生产者,负责生产;顾客是消费者,负责消费。厨师和顾客各做各的事情。传菜窗口就是队列,它把生产者与消费者联系在一起。2.2.2 实例1:使用Python实现队列实例描述

使用Python自带的queue对象来实现队列:(1)使用Python实现一个简单的“生产者/消费者”模型。(2)使用Python的queue对象做信息队列。

在Python使用多线程实现生产者与消费者的程序中,可以使用Python自带的queue对象来作为生产者与消费者沟通的队列。

在代码2-1中,生产者负责产生两个数字,消费者负责把两个数字相加。代码2-1 简单的“生产者/消费者”队列

生产者固定每两秒生产一组数,然后把这一组数放进队列里。

消费者每次从队列里面取一组数,将它们相加然后打印出来。消费者取一次数的时间是1~10秒中的一个随机时间。

由于生产过程和消费过程的时间不对等,所以,可能会出现生产者生产的数据堆积在队列中的情况,如图2-3所示。图2-3 生产的数据堆积2.2.3 Python的Queue及其缺陷

代码2-1的运行结果存在两种情况:

● 如果消费者每次暂停的时间都小于2秒,那么队列始终是空的,来一组数立刻就被消费。

● 如果消费者每次暂停的时间都大于2秒,那么队列里的数就会越来越多。

但是,由于消费者暂停时间是随机的,我们不能提前知道它每次会暂停多久。

假定程序运行了1小时,请问队列里有多少数据?

如果使用Python自带的队列,就会出现以上的疑问。因为开发者不能直接看到队列的长度。如果开发者一开始就考虑到“需要随时观察队列长度”这个需求,那么可以通过对代码做一些修改来实现。但如果一开始没有打算观察队列长度,仅仅是临时起意,那该怎么办?

如果不仅想看队列长度,还想看里面每一组数都是什么,又该如何操作?

假设队列里已经堆积了一百组数,现在想增加消费者,该怎么增加?

如再运行一个Python程序,那能去读第一个正在运行中的Python程序中的队列吗?

Python 把队列中的数据存放在内存中。如果电脑突然断电,那队列里的数是不是全都丢失了?

为了防止丢数据,是否需要把数据持久化到硬盘?那持久化的代码怎么写,代码量有多少,考不考虑并发和读写冲突?

为了解决上述问题,在代码2-1的基础上,代码量要翻倍翻倍再翻倍。2.2.4 实例2:使用Redis替代Queue实例描述

使用Redis作为队列,从而解决实例1中遇到的各种问题。(1)拆分“生产者/消费者”队列。(2)使用Redis的列表作为队列。

如果使用Redis代替Python自带的队列,解决2.2.3小节中提出的所有问题,则代码量的变化甚至可以忽略不计。把生产者代码和消费者代码分别写到两个文件中。1.生产者代码代码2-2 使用Redis后的生产者代码2.消费者代码代码2-3 使用Redis后的消费者代码提示:

读者不必太纠结本章中的代码,本书后面的章会对各个知识点做详细的解读。

现在,生产者和消费者可以放在不同的机器上运行,想运行多少个消费者就运行多少个消费者,想什么时候增加消费者都没有问题。

如果想观察当前队列里有多少数据,或者想看看具体有哪些数据在队列里,则执行一条命令:“llen队列名称”即可。图2-4中,当前队列中已经堆积了35组数据。图2-4 观察当前队列中有多少数据

Redis自己会对数据做持久化处理,所以,即使电脑断电也不必担心。甚至,开发者还可以通过修改队列中的数据,从而影响消费者的输出结果。本章小结

本章简单介绍了MongoDB与Redis的两个应用实例,从而引出了MongoDB和Redis在实际应用中的优势。其中,MongoDB 可以用来保存大量数据,且字段和格式均可以随意改变;Redis扩展了队列的应用范围,使得开发者可以方便地观察程序的运行状况,甚至在运行中改变程序的行为。第2篇 快速入门非关系型数据库有着强大的扩展能力,不需要事先定义好数据库中的字段,数据插入速度远超关系型数据库。第3章会介绍MongoDB的安装和基本语法。另外,介绍在图形化管理工具Robo 3T中操作MongoDB,以及使用Python操作MongoDB的方法。第4章会以实例的形式巩固MongoDB的基础知识。第5章会介绍Redis的安装和基本语法,以及使用Python操作Redis的方法。第6章会以实例的形式巩固Redis的基础知识。第3章 MongoDB快速入门

MongoDB的语法与Python非常相似。在很多情况下,操作MongoDB的代码都可以直接用到Python中。所以,结合Python来学习MongoDB可以起到事半功倍的效果。3.1 MongoDB和SQL术语对比

SQL与MongoDB术语对比见表3-1。表3-1 SQL与MongoDB术语对比3.2 安装MongoDB3.2.1 在Windows中安装(1)访问 MongoDB 官网的下载页面(https://www.mongodb.com/download-center?jmp=nav#community),单击“DOWNLOAD(msi)”按钮,如图3-1所示。图3-1 从MongoDB官网下载Windows版MongoDB(2)双击下载的文件(如无特殊说明,只需要一直单击“Next”按钮即可)。在安装过程中将会看到如图3-2所示的界面选择安装方式,这里单击“Custom”按钮。(3)修改文件的安装路径到 C:\Program Files\MongoDB,单击“Next”按钮进行安装,如图3-3所示。图3-2 单击“Custom”按钮图3-3 修改文件安装路径(4)安装完成以后,进入C:\Program Files\MongoDB\bin,可以看到如图3-4所示的内容。图3-4 安装完成后的文件内容(5)将这里的所有文件全部复制并粘贴到C:\MongoDB\下,以方便管理。

手动创建存放数据文件的文件夹“C:\MongoDB\Data”,以及存放日志文件的文件夹“C:\MongoDB\Log”。最后使用记事本创建配置文件,配置文件的内容见代码3-1。代码3-1 MongoDB配置文件(6)将配置文件保存在“C:\MongoDB\mongod.conf”。此时,C:\MongoDB\下的内容如图3-5所示。

在D:\MongoDB的安装文件夹中的空白位置,按住Shift键并单击鼠标右键,在弹出的菜单中选择“在此处打开命令窗口”命令,然后输入以下代码启动MongoDB:

mongod.exe --config mongod.conf图3-5 创建文件夹和配置文件以后的MongoDB文件夹

运行MongoDB以后,由于日志文件(Log)都已经被写到文件C:\MongoDB\Log\mongo.log中了。因此控制台中就什么都没有显示,如图3-6所示。这是正常现象。图3-6 MongoDB在Windows中运行不会有内容打印出来3.2.2 在Linux中安装

由于 Linux 有众多的发行版,不同发行版本有不同的包管理工具,所以在各个发行版本中安装MongoDB的命令可能会有一些差异。本书以Ubuntu 18.04与Ubuntu 16.04为例,来说明如何安装MongoDB。1.在Ubuntu 18.04中安装MongoDB(1)安装。

在Ubuntu 18.04中安装MongoDB非常简单,只需要执行以下两行命令:

sudo apt update

sudo apt install -y mongodb(2)确认MongoDB是否正常。

Ubuntu 18.04版的MongoDB自带了一个配置文件(/etc/mongod.conf)。MongoDB被安装后,系统会以这个配置文件为基准,自动以服务的方式启动它。所以,MongoDB安装完成后就自启动了,不需要运行额外的命令来启动。

但是,可以通过以下命令来确认MongoDB是否正常运行:

systemctl status mongodb

图3-7中方框框住的“active(running)”表示MongoDB正在运行。图3-7 观察MongoDB是否正常运行提示:

如果不是以root账户登录Ubuntu,则执行systemctl命令时需要加上“sudo”,如下:sudo systemctl status mongodb2.在Ubuntu 16.04中安装MongoDB

首先添加MongoDB的源,见代码3-2。代码3-2 在Ubuntu16.04中安装MongoDB

其中主要代码说明如下。

● 第1行代码:导入包管理程序的公钥。

● 第3行代码:创建MongoDB需要用到的列表文件。

● 第5行代码:安装MongoDB。提示:

Ubuntu 16.04版的MongoDB也自带配置文件,地址为:/etc/mongod.conf。3.启动MongoDB

安装完成后,MongoDB服务并不会自动启动,需要使用 systemctl 命令来启动,具体命令如下:

sudo systemctl start mongod  # 启动MongoDB

sudo systemctl enable mongod  # 把MongoDB设置为开机启动提示:

在 Ubuntu 18.04中执行 systemctl 命令时,MongoDB 对应的名字为“mongodb”。在Ubuntu16.04中,MongoDB对应的名字为“mongod”,请注意区分。3.2.3 在macOS中安装1.使用Homebrew安装并启动MongoDB

Homebrew是macOS系统中非常优秀的第三方包管理工具。如果读者已经安装过Homebrew,则再安装MongoDB就变得极其简单。执行以下命令即可完成安装。

brew update

brew install mongodb

使用Homebrew安装的MongoDB会自动生成配置文件。

在安装完成以后,直接使用以下命令启动MongoDB:

mongod --config /usr/local/etc/mongod.conf2.使用普通方式安装

在终端中输入以下命令来下载、解压MongoDB到~/chapter_3/mongo/mongodb文件夹中,见代码3-3。代码3-3 手动安装MongoDB

其中,主要代码说明如下。

● 第1、2行代码:创建文件夹。

● 第3行代码:进入刚刚创建的文件夹。

● 第4行代码:下载MongoDB的压缩包。tgz是一种压缩格式。

● 第5行代码:把压缩包解压到当前文件夹。

● 第7行代码:把解压后的MongoDB文件复制到刚刚新创建的mongodb文件夹中。

运行效果如图3-8所示。图3-8 手动安装MongoDB

安装完成后,在~/chapter_3/mongo/mongodb/bin文件夹下可以看到如图3-9所示的各个文件。图3-9 MongoDB文件夹

与Windows一样,在macOS下使用这种方式,MongoDB不会自动创建配置文件,因此需要进一步配置。(1)在~/chapter_3/mongo/mongodb/bin文件夹下,手动创建两个文件夹——log和 data。提示:

可以直接在终端里使用“mkdir”命令创建。也可以用访达(Finder)打开~/chapter_3/mongo/mongodb/bin文件夹,如图3-10所示,然后在图形界面下创建log和 data文件夹。图3-10 在图形界面中进入~/chapter_3/mongo/mongodb/bin文件夹(2)使用任何一个适合写代码的文本编辑器(如Vim/Visual Studio Code/Sublime/Atom等),编写内容见代码3-4中的内容,然后将编写的代码保存到~/chapter_3/mongo/mongodb/bin/mongodb.conf中。代码3-4 MongoDB的配置文件

试读结束[说明:试读内容隐藏了图片]

下载完整电子书

若在网站上没有找合适的书籍,可联系网站客服获取,各类电子版图书资料皆有。

客服微信:xzh432

登入/注册
卧槽~你还有脸回来
没有账号? 忘记密码?