什么是 Redis
Redis 是一款内存高速缓存数据库。Redis 是一个 key-value 存储系统(建值存储系统),支持丰富的数据类型,如:字符串、哈希、列表、集合、有序集合。
下载和启动
Redis 下载镜像和 MySQL 类似,也是去 【 Docker 】里下载
下载
1 | docker pull redis:7.0.0 |
启动
1 | docker run --name myRedis -d -p 6379:6379 -v /Users/gladysdrea/Applications/Docker/myRedis:/data redis:7.0.0 |
我们可以使用 “Another Redis Desktop Manager” 这个软件来查看 Redis 数据库。
这里我们同样做个数据持久化,Redis 的数据持久化是放在 /data 中的
在 MidWay 中使用 Redis
安装依赖
@midwayjs/redis 是主要的功能包,@types/ioredis 是 定义包。
1 | npm i @midwayjs/redis@3 --save |
引入组件
在 src/configuration.ts 中导入
1 | // src/configuration.ts |
配置 Redis
1 | // src/config/config.default.ts |
使用 Redis 服务
我们可以在任意代码中使用 Redis 服务。
1 | // 一般情况下,我们在 Service 层去使用 Redis,当然其他文件也可以使用 |
- 设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17await this.redisService.set('name', 'Avery')
/*
* 如果有需要的话,我们可以先使用 JSON.stringify() 序列化一下
*/
const list = [
{
name: '测试'
},
{
name: '测试'
}
]
await this.redisService.set('list', JSON.stringify(list))
/*
* 也可以设置过期时间,单位:秒
*/
await redisService.set('name', 'Avery', 'EX', 1000); - 获取
1
const result = await this.redisService.get('name');
- 删除了解了 Redis 的使用和方法之后,我们就可以使用 Redis 来存储热点数据。可以结合 expire ,设置过期时间(上边有介绍设置过期时间的方法),这些是也是项目中最常用的。
1
await this.redisService.del('name');
我们来结合一个小需求来具体的运用一下:
需求: - 用户登录后,把用户信息存到 Redis 里,下次登录的时候,如果 Redis 有该用户的信息,直接从 Redis 中取。
- 删除用户时,把 Redis 中的该用户信息也删掉
首先,先写一个登录的 Service
1 | // src/service/userService.ts |
接下来,开始写登录的路由了
1 | // src/controller/user.controller.ts |
这样,第一个小需求就完成了,可以去 Redis 中查看一下保存的数据,如下图。接下来,我们继续第二个小需求,删除 Redis 中的数据
同样的,我们在 Service 中写一个删除的方法,在 Controller 中写一个删除的路由,这样在调用删除接口的时候,MySQL 和 Redis 中的数据就都被删除了。
1 | // 删除数据 |
1 | '/del') ( |
我们发现, Redis 的增、删、查都有了,那更新呢,其实 Redis 中更新数据的话,直接把之前的数据删除重新添加就可以了。
此外 Redis 还可以实现排行榜、计数器、分布式锁等,可根据业务需求,灵活运用。