【Express.js】集成Redis

集成Redis

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

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

准备工作

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

创建代理

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

redisProxy.js:

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

js 复制代码
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导出来:

js 复制代码
async function init() {
  return RedisProxy.instance();
}

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

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

js 复制代码
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

相关推荐
何中应1 分钟前
【Go-1】变量&常量定义
开发语言·后端·golang
海棠Flower未眠10 分钟前
下单请求处理流程:商品维度分布式锁与 Redis 预扣库存
redis·分布式·junit
愚农搬码10 分钟前
电子表单、动态表单、表单设计器和表单引擎到底有什么区别?
java·后端
我不会起名字32211 分钟前
Redis 从 0 到 1(二十一):P99 涨到 80ms,慢查询日志 5 步定位法 + Go 采集器
redis·go·慢查询·排查·slowlog
挖掘狂人13 分钟前
Redis 为什么快?把 "存内存" 这句话拆开看
redis·后端·性能优化
Moment27 分钟前
DeepSeek 发布新模型,直接把 Agent 联网搜索的门槛打下来了!
前端·后端
geovindu27 分钟前
rust:N-Barrier Pattern
开发语言·后端·设计模式·rust·屏障模式·并发型模式
努力的小雨34 分钟前
Milvus知识库PDF导入失败怎么办?10分钟看懂异常日志排查
后端
Rain的Java大神之路40 分钟前
「设计一个在线文档协同编辑系统」:从 WebSocket、OT/CRDT 到快照回放,一篇讲透这道面试顶流题
java·后端·面试
codigger44 分钟前
Redis 为什么快?把 "存内存" 这句话拆开看
redis·后端·性能优化·程序员