express使用redis

我用的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
posted @ 2025-09-17 15:12  朝阳1  阅读(8)  评论(0)    收藏  举报