express使用redis

news/2025/9/17 15:15:27/文章来源:https://www.cnblogs.com/qcy-blog/p/19096821

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day07 课程

day07 课程课程:https://www.bilibili.com/video/BV1o4411M71o?spm_id_from=333.788.videopod.episodes&p=148 7.1 字典的应用场景7.2 创建字典的语法7.3 字典常用操作之新增7.4 字典常用操作之删除7.5 字典常用操作之修改———————————————————————…

排序实现java - 教程

排序实现java - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14p…

.net core 发布到 iis 步骤

1. 打开服务器管理器,管理,添加角色和功能,把 IIS 相关的全勾上。 2. 安装.net core 环境,需要 ASP.NET Core 运行时的 Hosting Bundle 版本,其他版本没用。 3. 安装 webdeploy, 服务器防火墙打开8172端口。 4. 在 IIS 上创建站点, 配置的文件夹权限需要添加 everyone 的…

kylin SP2安装mysql8.4.5

环境:OS:kylin SP2mysql:8.4.5 glibc2.17,建议安装glibc.2.28版本 查看系统glibc版本[root@localhost soft]# ldd --version ldd (GNU libc) 2.28 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There i…

微信社群机器人接口

微信个人号开发API/文档/教程 大家一般需求点无非是以下几个需求: 1.开发个人微信营销系统 2.开发自定义的微信机器人, 3.开发微信智能聊天客服系统 4.定制行业内的群数据分析功能需求很简单,业务代码贼好撸,但是如何和微信交互呢,如何取到微信数据调用相关聊天接口呢,具体…

C++的枚举类

语法:enum class 枚举类名 [: 底层类型] {枚举值1,枚举值2,... };一般形式(当然我们一般默认成员都显转int,因此底层类型一般不写) C++的枚举类: 在C++中,enum class是一种类型安全的枚举类型,它比传统的enum类型提供了更好的作用域控制和类型安全性。使用enum class可以…

Revit二次开发 钢筋生成API(一)

1、自由钢筋生成API创建不受约束的自由形式钢筋。以后不能将约束添加到此钢筋。public static Rebar CreateFreeForm(Document doc,RebarBarType barType,Element host,IList<CurveLoop> curves,out RebarFreeFormValidationResult error )通过此方法,可以创建一个或者多…

方法

什么是方法 方法是程序中最小的执行单位 实际开发中:重复的代码,具有独立功能的代码可以抽取到方法当中 实际开发中方法的好处:可以提高代码的复用性 提高代码的可维护性 最简单的方法定义和调用 方法的格式:把一些代码打包在一起,用到时候就调用 方法定义:把一些代码打包在…

详细介绍:PHP基础-语法初步(第七天)

详细介绍:PHP基础-语法初步(第七天)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !importan…

如何通过Python SDK 删除 Collection

本文介绍如何通过Python SDK删除一个已创建的Collection。 重要 删除Collection后,该Collection所有数据将删除且不可恢复,请谨慎操作。 前提条件已创建Cluster:创建Cluster已获得API-KEY:API-KEY管理已安装最新版SDK:安装DashVector SDK接口定义 Python示例: Client.del…

Inventor Professional 2026.1.1 产品设计与工程制图

描述 Autodesk Inventor提供了专业级机械设计、文档编制和产品仿真工具。参数化建模、直接建模、自由形状建模和基于规则的设计功能的强大组合。用于钣金、结构件设计、三维布管、电缆和线束、演示、渲染、仿真、机床设计等的集成工具。值得信赖的 DWG™ 兼容性,强大的基于模型…

叮当计步微信小程序系统

1. 概述总结 叮当计步小程序系统是基于微擎系统交付的应用,微擎系统是一款基于 PHP 开发的开源应用生态系统,主要用于快速搭建微信公众号、小程序等应用,同时支持 Web 系统开发与部署。该计步系统历经数月研发,投入 20 多万研发费用,注重数据可靠性、系统扩展性和高并发支…

叮当计步微信小程序系统

1. 概述总结 叮当计步小程序系统是基于微擎系统交付的应用,微擎系统是一款基于 PHP 开发的开源应用生态系统,主要用于快速搭建微信公众号、小程序等应用,同时支持 Web 系统开发与部署。该计步系统历经数月研发,投入 20 多万研发费用,注重数据可靠性、系统扩展性和高并发支…

maven项目连接DM数据库和基本sql使用

maven项目连接DM数据库和基本sql使用直接引入Maven依赖<!-- DM数据库JDBC驱动 --> <dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.3.140</version> </dependency>dem…

maven项目连接DM数据库和基本sql使用

maven项目连接DM数据库和基本sql使用直接引入Maven依赖<!-- DM数据库JDBC驱动 --> <dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.3.140</version> </dependency>dem…

【中国计算机学会CCF主办】第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026)

第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026) 2026 6th International Conference on Artificial Intelligence, Big Data and Algorithms (CAIBDA 2026)重要信息 大会时间:2026年6月12-14日 大会地点:天津(线上同步进行) 大会官网:www.caibda.org *为报名…

【中国计算机学会CCF主办】第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026)

第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026) 2026 6th International Conference on Artificial Intelligence, Big Data and Algorithms (CAIBDA 2026)重要信息 大会时间:2026年6月12-14日 大会地点:天津(线上同步进行) 大会官网:www.caibda.org *为报名…

仿腾讯会议——退出房间

客户端 1、添加绘图成员 2、 实现视频的重绘事件 3、实现关闭函数 定义信号和函数 关闭函数实现 添加清空列表功能 在房间内添加用户映射表 中介者退出函数 移除用户展示界面 离开房间请求处理 服务端

蓝桥杯分享经验

系列文章目录 提示&#xff1a;小白先看系列 第一章 蓝桥杯的钱白给吗 文章目录 系列文章目录前言一、自我介绍二、经验讲解:1.基础知识2.进阶知识3.个人观点 三、总结四、后续 前言 第十六届蓝桥杯已经省赛已经结束了&#xff0c;相信很多小伙伴也已经得到自己的成绩了。接下…