前言
本文通过NestJS框架链接Redis数据库实现增、删、改、查接口的实现;
工具
- 服务端框架:NestJS
- 数据库:Redis
- VSCODE插件:Database Clien 管理数据库
- 浏览器插件:apifox 验证接口
构建项目
# 全局安装nest脚手架
$ npm i -g @nestjs/cli
$ nest new project-name//例如(api)项目名
# 启动项目
$ npm run start:dev//开发阶段使用
# 下载相关的包(用于链接Redis数据库使用)
$ npm install --save ioredis @nestjs-modules/ioredis
文件目录如下:
src:.
├─redisapi(说明:单个接口目录名为crud)//通过指令创建出来的 例如:npx nest g res redisapi --no-spec
| |— crud.controller.ts//关于此接口控制器
| |— crud.module.ts//关于此接口模块
| |_ crud.service.ts//关于此接口服务
├─ app.controller.ts//控制器
├─ app.module.ts//模块
├─ app.service.ts//服务
└─ main.ts//入口文件
链接数据库
先创建一个数据库:可以参考博主的另一篇文章《快速安装MySQL及常用SQL基操》
前提已经安装了mysql并且配置完成;
# 创建数据库步骤
1.搜索框输入cmd使用快捷键(Ctrl+Shift+Enter)以管理员身份运行
2.输入 redis-cli //安装回车键 进入Redis;
3.验证链接 ping//返回pong
4.创建新的键值对数据 SET name boykayuli//
5.查看name get name//返回 boykayuli 创建成功
6.创建哈希 HSET key field value//例子 hset user:1 name 'boykayuli' age 20 sex 'man'
7.查看哈希 HGETALL user:1//返回 {name:'boykayuli',age :20, sex:'man'}
8. 其他数据操作
### 以上操作也可以借助Database Clien插件实现在编辑器中安装对应的插件连链接数据库建表、导入数据
.env
文件内容:
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=""
REDIS_DB=0
在app.module.ts
# 通过动态加载.env
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { RedisModule } from '@nestjs-modules/ioredis';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { RedisapiController } from './redisapi/redisapi.controller';
import { RedisapiService } from './redisapi/redisapi.service';
import { RedisapiModule } from './redisapi/redisapi.module';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: `.env`, // 加载环境变量文件
}),
RedisModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (configService: ConfigService) => ({
type: 'single', // 使用单实例模式
options: {
host: configService.get<string>('REDIS_HOST'),
port: configService.get<number>('REDIS_PORT'),
password: configService.get<string>('REDIS_PASSWORD'),
db: configService.get<number>('REDIS_DB'),
},
}),
}),
RedisapiModule],
controllers: [AppController, RedisapiController],
providers: [AppService, RedisapiService],
})
export class AppModule {}
接口编写及调试
使用指令创建一个RedisAPI模块
npx nest g mo redisapi --no-spec//创建redisapi.module.ts
npx nest g s redisapi --no-spec//创建redisapi.service.ts
npx nest g co redisapi --no-spec//创建redisapi.controller.ts
在redisapi.module.ts
import { Module } from '@nestjs/common';
import { RedisapiService } from './redisapi.service';
import { RedisapiController } from './redisapi.controller';
@Module({
providers: [RedisapiService],
controllers: [RedisapiController]
})
export class RedisapiModule {}
在redisapi.service.ts
import { Injectable } from '@nestjs/common';
import { InjectRedis } from '@nestjs-modules/ioredis';
@Injectable()
export class RedisapiService {
constructor(@InjectRedis() private readonly redis) {}
async getRedis(key:string){
console.log(key)
let data = await this.redis.get(key)
if(data == null){
return {
code:400,
msg:"查询失败",
data:null
}
}
return {
code:200,
msg:"查询成功",
data
}
}
async setRedis(body:any){
let data= await this.redis.set(body.key, body.value);
if(data == "OK"){
return {
code:200,
msg:"设置成功",
data
}
}
return {
code:400,
msg:"设置失败",
data
}
}
async delRedis(key:string){
let data = await this.redis.del(key);
if(data == 1){
return {
code:200,
msg:"删除成功",
data }
}
}
}
在redisapi.controller.ts
import { Controller,Get,Post, Body,Param,Delete} from '@nestjs/common';
import { RedisapiService } from './redisapi.service';
@Controller('redisapi')
export class RedisapiController {
constructor(private readonly redisapiService: RedisapiService) {}
@Get(`:key`)
getRedis(@Param('key') key: string) {
return this.redisapiService.getRedis(key);
}
@Post()
setRedis(@Body() body: any) {
return this.redisapiService.setRedis(body);
}
@Delete(':key')
removeRedis(@Param('key') key: string) {
return this.redisapiService.delRedis(key);
}
}
接口实现完后通过Apifox浏览器插件
- 创建团队
- 在团队中创建项目
- 进入项目点击快捷请求 如图所示
总结
以上就是NestJS链接Redis以及编写、调试、测试增、删、改、查接口的全部流程,以及Database Clien的基本操作等相关内容;