接下来,我们开始实现我们的功能。在实现功能之前,我们肯定要完成数据库的连接。比如,我们现在要做注册功能,注册功能肯定需要向数据库进行增删改查操作。我们使用的数据库是Mongo,同时在注册时,由于需要生成前端所需的唯一ID,我们还需要接入Redis,利用其自增功能来保证ID的唯一性。
既然要用到Mongo和Redis,我们自然需要建立它们的连接。在启动时,我们会创建一个连接池,方便后续操作。创建连接池之后,我们需要将对应的连接管理操作注入到对应的GRPC service中,以便后续使用。
接下来,我们在common目录下建立一个DATABASE文件夹,并在其中创建两个文件:Mongo和Redis。我们先从Mongo说起。
在使用Mongo时,我们需要先了解它的使用方法。打开Mongo的官方文档,我们会发现它有一个Go语言的驱动库。使用这个库时,我们首先要进行go get
操作。因此,我们先打开命令行,切换到common目录,然后执行go get
命令。
在使用过程中,我们主要进行以下几个操作:先连接Mongo的地址,获取客户端;然后连接对应的数据库,并可以ping一下以检查连接是否成功;最后,通过collection操作对应的表(在Mongo中称为集合)。
在管理Mongo连接时,我们主要负责创建客户端和数据库连接。接下来,我们在Mongo文件中创建一个Mongo管理器。封装的好处在于,我们可以在此基础上添加自己的方法,以便根据项目需求进行更便捷的操作。
我们首先定义一个客户端和一个数据库连接。通过new Mongo
函数,我们创建一个Mongo管理器。在连接过程中,如果数据库未启动,可能会导致连接失败。为了避免项目卡死,我们可以设置一个超时时间,默认为10秒。当然,这个时间也可以写入配置文件,通过配置文件加载。
在Mongo的配置中,我们有一个URL,用于连接Mongo地址。连接成功后,我们需要进行认证,包括用户名和密码。这些信息都可以从配置文件中读取。此外,我们还可以设置连接池的最小和最大连接数等参数。这些参数也可以写入配置文件,方便后续修改。
连接成功后,我们通过ping
操作检查连接是否正常。如果ping
失败,我们会报错并退出。如果连接正常,我们就可以获取对应的数据库连接。
在使用Mongo时,我们还需要注意关闭连接,以避免占用过多资源。在关闭连接时,我们也可以设置超时时间,并在报错时记录错误信息。
这样,我们就完成了Mongo的封装。后续使用时,我们可以通过Mongo管理器直接操作客户端或数据库。如果需要封装更多额外操作,也可以在管理器中继续添加。
在完成Mongo管理器的编写之后,我们接下来要编写Redis的相关代码。Redis的操作其实和Mongo类似。我们可以在网上搜索“go redis”,找到合适的库来使用。使用时,我们同样需要通过go get
命令来安装。
安装完成后,我们会维护一个Redis客户端。这个客户端是Redis操作的核心,通过它可以执行各种操作,比如get
和set
等。在文档中可以看到,Redis客户端支持多种操作。
在实际使用中,我们可能会根据配置文件来判断是使用单机模式还是集群模式。如果配置文件中提供了多个地址,那么我们就可以认为这是集群模式。在这种情况下,我们会使用集群客户端来进行操作。
在封装Redis管理器时,我们可以通过配置文件来灵活切换单机和集群模式。这样,我们就可以根据实际需求轻松地进行配置。
在操作过程中,我们还需要进行ping
操作来测试连接是否正常。如果ping
失败,我们会报错并给出提示。如果连接正常,我们就可以继续进行其他操作。
在封装Redis管理器时,我们还可以添加一些额外的操作,比如set
操作。在执行set
操作时,我们可以根据需求设置键值对以及超时时间。如果操作过程中出现错误,我们也会进行相应的处理。
在实际开发中,为了简化开发流程,我们可以选择使用单机模式或者集群模式。但在实际部署时,建议根据具体需求编写更严谨的逻辑,以便更好地适应不同的场景。
在代码中,我们可以创建一个统一的管理器,将Mongo和Redis的管理器统一管理起来。这样,在操作时就可以直接通过这个管理器来传递数据。
在APP启动时,我们可以初始化这个管理器,并将其传递给GRPC服务。这样,我们就可以在服务中方便地使用Mongo和Redis。