当前位置: 首页 > news >正文

【Express.js】集成Redis

集成Redis

本节我们介绍在 express.js 中集成 redis.

Redis是一个高性能的key-value内存数据库,支持事务、队列、持久化等特性,常用于高并发性能场景。

准备工作

  • 创建一个 express.js 项目(本文基于evp-express-cli)
  • 在开发环境下安装redis
  • 安装redis.js:
npm i redis

创建代理

正常的项目都是分层的,为了避免循环依赖,本文采用代理类构造单例的方式来创建redis连接。

redisProxy.js:
在构造器内创建redis连接,并监听个别事件,最后把连接赋给client成员变量。再定义一个静态的获取实例方法,调用时实例若为空,就构建实例:

const Redis = require('redis');
const logger = require('./logger');class RedisProxy {/*** @type {RedisProxy}*/_instance = null;constructor() {const client = Redis.createClient({url: `redis://127.0.0.1:6379`,});client.on('connect', () => {logger.info('Redis connected!');});client.on('error', err => {logger.error('Redis Client Error!', err);process.exit(1);});client.connect();this.client = client}static instance() {if(!this._instance) {this._instance = new RedisProxy();}return this._instance;}
}

然后把redis导出来:

async function init() {return RedisProxy.instance();
}module.exports = {init,instance: RedisProxy.instance(),
};

然后在任意其它地方调用 redisProxy.instance 即可获取单例,在从单例中获取client即可操作redis.

const RedisProxy = require('../utils/redisProxy');
const redisProxy = RedisProxy.instance;
const redis = redisProxy.client;redis.set("name", "evpantchouli");  //设置键
console.log(await redis.get("name"); //取键

你可以自己手动配置一遍,也可以使用evp-express-cli作为手脚架创建项目并选择redis模板。

关于redis.js的详细用法请见官方文档: http://npmjs.com/package/redis

下一节-集成RabbitMQ

http://www.lryc.cn/news/117189.html

相关文章:

  • StringBuilder创建的对象如何清空
  • mybatis-plus实现mysql自定义IKeyGenerator
  • 山西电力市场日前价格预测【2023-08-11】
  • 浏览器无法连接网络问题
  • ZyjDataLink 全量MySQL同步程序 - 开发过程 01
  • 为什么说Python股票接口是连接投资与编程的桥梁?
  • kubectl,helm安装到window
  • 【BASH】回顾与知识点梳理(目录)
  • TFRecords详解
  • 【多维定向滤波器组和表面波】表面变换:用于高效表示多维 s 的多分辨率变换(Matlab代码实现)
  • 45.113.201.X服务器远程不上是什么原因,有什么办法解决?
  • 微信小程序 地图map(电子围栏圆形和多边形)
  • Dockerfile 文件
  • ssm学院党员管理系统源码和论文PPT
  • 文件数字水印,附一种纯文本隐写术数字水印方法
  • 测试开发(一) 使用Vue开发chrome插件
  • 游戏行业实战案例 4 :在线时长分析
  • 记一次图片压缩引发的生产问题
  • mybatis-flex探索
  • 用ClickHouse 文件表引擎快速查询分析文件数据
  • esp8266httpclient_get_post使用
  • 【Spring】创建一个Spring项目与Bean对象的存储
  • Docker的入门与使用
  • Smart HTML Elements 16.1 Crack
  • [分享]STM32G070 串口 乱码 解决方法
  • [代码案例]学会python读写各类文件的操作(excel,txt,mat)
  • 【LeetCode】练习习题集【4月 - 7 月】
  • C# 子类强制转换为父类异常,引出的C#Dll加载机制,以及同类名同命名空间同dll程序集在C#中是否为同一个类的研究。
  • Go语言进阶
  • Java的枚举