我用的pnpm
pnpm add express redis
const express = require('express');
const redis = require('redis');
var app = express()
var port = 3000
// 创建 Redis 客户端实例
const redisClient = redis.createClient({
url: 'redis://172.17.0.185:6379' ,
password: 'b7371d927aec647d',
db: 0,
});
// 连接 Redis 服务器
// 异步连接Redis
(async () => {
try {
await redisClient.connect();
console.log('Redis连接成功');
} catch (err) {
console.error('Redis连接失败:', err);
process.exit(1); // 如果Redis连接失败,退出应用
}
})();
// 将redisClient挂载到app实例上,方便后续路由使用
app.locals.redisClient = redisClient;
// ========== Redis 初始化结束 ==========
// 错误处理中间件中添加 Redis 关闭逻辑
process.on('SIGINT', () => {
redisClient.quit().then(() => {
console.log('Redis连接已关闭');
process.exit(0);
});
});
app.get('/', (req, res) => {
res.send('Hello World!')
})
// 设置 Redis 值的路由
app.get('/redis/set', async (req, res) => {
try {
const { key, value, expire } = req.query;
// 检查参数是否齐全
if (!key || !value) {
return res.status(400).json({
success: false,
message: '缺少必要参数: key 和 value'
});
}
// 设置值
await req.app.locals.redisClient.set(key, value);
// 如果提供了过期时间,设置过期时间(单位:秒)
if (expire) {
await req.app.locals.redisClient.expire(key, parseInt(expire));
}
res.json({
success: true,
message: 'Redis 值设置成功',
data: {
key,
value,
expire: expire ? parseInt(expire) : null
}
});
} catch (err) {
console.error('设置 Redis 值时出错:', err);
res.status(500).json({
success: false,
message: '设置 Redis 值失败',
error: err.message
});
}
});
// 获取 Redis 值的路由
app.get('/redis/get', async (req, res) => {
try {
const { key } = req.query;
// 检查参数是否齐全
if (!key) {
return res.status(400).json({
success: false,
message: '缺少必要参数: key'
});
}
// 获取值
const value = await req.app.locals.redisClient.get(key);
if (value === null) {
return res.json({
success: true,
message: '未找到该 key 对应的值',
data: null
});
}
res.json({
success: true,
message: 'Redis 值获取成功',
data: {
key,
value
}
});
} catch (err) {
console.error('获取 Redis 值时出错:', err);
res.status(500).json({
success: false,
message: '获取 Redis 值失败',
error: err.message
});
}
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
测试地址
http://localhost:3000/redis/set?key=test2&value=world&expire=60
http://localhost:3000/redis/get?key=test2