使用Redis构建一个简单的Nest.js应用程序
Nest.js是一个JavaScript框架,用于构建高效、可扩展和静态的服务器端应用程序。Nest.js构建在React之上,以获得更好的渲染和抽象。这使你能够构建强大的React应用程序。
Nest.js允许你构建支持服务器端渲染的React应用程序。传统上的React,你只能在客户端渲染,这对SEO有负面影响。
通过服务器端渲染,页面在构建阶段就被渲染了。然后将内容提前提供给用户或搜索引擎机器人。
目标
本教程将告诉你如何构建一个使用Redis作为消息传输器的Nest.js微服务应用程序。
微服务的概述
微服务是一种架构设计,允许人们创建可按需扩展的应用程序的小模块/组件。每个组件都是独立打包的,并且可以通过API相互通信和互动。
Nest.js内置了对微服务架构和多个传输层的支持。这些传输层负责在微服务实例之间传输消息。
我们可以使用Redis作为传输层协议进行端到端的连接。Redis允许不同的微服务之间进行流量控制和分段。因此,每个微服务可以连接到不同的通道,而每个通道可以有各种微服务连接到它。
现在让我们使用Redis作为传输器构建一个Nest.js微服务应用程序。
前提条件
-
我们将使用一个Node.js包来捆绑
Nest.js CLI。因此,确保你已经安装了Node.js,在你的电脑上有NPM。 -
Nest.js是由Typescript捆绑和支持的。
-
为了实现一个微服务架构,我们将使用Redis作为传输器。所以要确保Redis已经安装在你的电脑上。
让我们开始吧。
第1步:设置应用环境
我们将首先使用Node.js包管理器安装Nest.js CLI 。
Nest CLI 是一个命令行GUI框架,帮助你配置、创建和维护Nest.js应用程序。这有助于一些活动,包括为Nest.js项目搭建脚手架,在开发环境中提供服务,以及创建和打包生产应用程序。
下面的命令将帮助我们在全局范围内安装Nest CLI 。
npm i -g @nestjs/cli
现在我们已经准备好了Nest.js CLI,我们可以继续创建一个Nest.js应用程序模板。
这里有一个命令来设置它。
nest new nest-ms
我们需要将我们新创建的项目变成一个monorepo 。一个monorepo 指的是一个承载不同微服务的单一存储库。
改变目录到nest-ms 。
为了在应用程序中生成monorepo ,我们在nest-ms 文件夹内运行以下命令。
nest generate app new_app
运行上述命令后,你将观察到一个apps 文件夹将被创建。这将为我们的项目提供支架,并为Nest.js项目生成controllers 、providers 、services 。
第2步:添加微服务和Redis包
使用以下NPM命令安装microservices 和redis 包。
npm install @nestjs/microservices redis
-
@nestjs/microservices- 它将允许你为我们的微服务设置各种配置。 -
redis- 它将有助于与目前安装在本地的 。redis
第3步:添加传输器的配置
我们将为运输机添加配置,如下所示。
首先,导航到你用nest generate app 命令生成的new_app 。
然后转到apps/new-app/src/main.ts ,用下面显示的几行代码替换main.ts 。
import { NestFactory } from '@nestjs/core';
import { NewAppModule } from './new-app.module';
import { Transport } from '@nestjs/microservices';
async function bootstrap() {
const app = await NestFactory.createMicroservice(NewAppModule, {
transport: Transport.REDIS, //setting transporter
options: {
url: 'redis://localhost:6379',
},
});
await app.listen();
}
bootstrap();
在上面的代码中,我们正在创建一个微服务,并将传输器设置为Redis 。
第4步:添加客户端服务的配置
在apps/nest-ms/src/app.service.ts 文件中,添加以下代码。
import { Injectable } from '@nestjs/common';
import {
Transport,
ClientProxy,
ClientProxyFactory,
} from '@nestjs/microservices';
@Injectable()
export class AppService {
private client: ClientProxy;
constructor() {
this.client = ClientProxyFactory.create({
transport: Transport.REDIS,
options: {
url: 'redis://localhost:6379',
},
});
}
getHello(): string {
return 'Hello World!';
}
}
在上面的代码中,我们正在用代理工厂设置客户端,并使用redis 作为传输器。
第5步:运行和测试应用程序
我们使用以下命令来启动Redis 服务器。
sudo systemctl start redis
我们可以从项目的根目录中执行以下命令来启动该应用程序。
npm start
然后我们打开另一个终端,运行下面的命令。
npm start new-app
在你的浏览器中,导航到http://localhost:3000 。
页面的内容应该与下面的图片几乎相同。

总结
你现在拥有一个使用Redis作为传输器的Nest.js微服务应用程序。你可以利用从本教程中获得的知识和技能来制作其他强大的应用程序。