我用的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