redis 安装及使用
在node项目里如何使用redis?
前置
本文使用的服务器示例是ubuntu,
node框架使用的是nestjs
安装redis
先在服务器里安装redis 执行:
sudo apt update
sudo apt install redis-server -y
安装完查看redis服务名称
systemctl list-unit-files | grep redis
大概率能看到
root@iZwz9b70sputpgn3j4vn3pZ:~$ systemctl list-unit-files | grep redis
redis-server.service enabled enabled
redis-server@.service disabled enabled
redis.service alias -
这里的redis-server就是redis的服务名称,此时需要启用redis
sudo systemctl enable redis-server
sudo systemctl start redis-server
在检查一遍
sudo systemctl status redis-server
此时大概率会是这样
root@iZwz9b70sputpgn3j4vn3pZ:~$ sudo systemctl status redis-server
● redis-server.service - Advanced key-value store
Loaded: loaded (/usr/lib/systemd/system/redis-server.service; enabled; pre>
Active: active (running) since Mon 2026-03-02 17:02:17 CST; 1min 49s ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Main PID: 489444 (redis-server)
Status: "Ready to accept connections"
Tasks: 5 (limit: 1857)
Memory: 3.3M (peak: 3.8M)
CPU: 218ms
CGroup: /system.slice/redis-server.service
└─489444 "/usr/bin/redis-server 127.0.0.1:6379"
Mar 02 17:02:17 iZwz9b70sputpgn3j4vn3pZ systemd[1]: Starting redis-server.servi>
Mar 02 17:02:17 iZwz9b70sputpgn3j4vn3pZ systemd[1]: Started redis-server.servic>
尝试执行redis-cli ping,如果能返回PONG说明没问题。
确认redis监听的是127.0.0.1,如果是说明没有对公网开放,这是对的。暴露在公网风险会很大
sudo netstat -tlnp | grep 6379
如果是0.0.0.0:6379说明已经暴露在公网了,需要修改redis.conf 顺便给redis添加密码。
sudo nano /etc/redis/redis.conf
确保bind 127.0.0.1 ::1,如果没有就自行添加上来。
设置redis密码
找到conf文件里的# requirepass foobared
修改为requirepass 你的强密码
保存文件,然后重启redis 服务
sudo systemctl restart redis-server
执行redis-cli 然后输入ping,如果返回
NOAUTH Authentication required.
说明密码已经生效了~
接着测试密码是否设置正确,执行auth 你的密码 再继续ping,此时如果返回PONG说明一切都设置好了!
那么我们先在的redis是有密码+不暴露公网+安全的了。
回到本地,建立redis ssh隧道,同前面prisma里建立ssh sql隧道一样,我们执行
ssh -L 6379:127.0.0.1:6379 -N -f 用户名@服务器IP
来建立ssh隧道连接。
回到nestjs项目,同prisma global module,我们创建一个全局的redis module供其他组件注入。
Redis Module
在环境变量里配置好redis host和刚设置的redis密码,然后使用Global装饰器声明为全局service,建立redis连接时我们输出日志,避免两眼一抹黑啥也不知道。
import { Module, Global } from "@nestjs/common";
import Redis from "ioredis";
import { REDIS } from "@root/constants";
@Global()
@Module({
imports: [],
controllers: [],
providers: [
{
provide: REDIS,
useFactory() {
const redis = new Redis({
host: process.env.REDIS_HOST,
port: 6379,
password: process.env.REDIS_PASSWORD,
});
redis.on("connect", () => {
console.log("Redis connected");
});
redis.on("error", (err) => {
console.error("Redis error:", err);
});
return redis;
},
},
],
exports: [REDIS],
})
export class RedisModule {}
我们这里用ioredis这个库来调用redis api
end 散会!