Nodejs+Redis实现简易消息队列

前言

消息队列是存储数据的一个中间件,可以理解为一个容器。生产者生产消息投递 到队列中,消费者可以拉取消息进行消费,如果消费者目前没有消费的打算,则消息队列会保留消息,直到消费者有消费的打算。
在这里插入图片描述

设计思路

生产者

  • 连接 redis
  • 向指定通道 通过 lpush 消息

消费者

  • 连接 redis
  • 死循环通过 brpop 阻塞式获取消息
  • 拿到消息进行消费
  • 循环拿去下一个消息

Redis

安装及启动

此步骤各位道友随意就好,不一定要用docker 。只要保证自己能连接到redis 服务即可。

# 使用docker 拉取redis 镜像
docker pull redis:latest

# 启动redis服务 
# --name 后面是容器名字方便后续维护和管理 
# -p 后面是指映射容器服务的 6379 端口到宿主机的 6379 端口
docker run -itd --name redis-mq -p 6379:6379 redis


# ============ docker 常用基本操作(题外话) =================

# 拉取镜像
docker pull 镜像名称 

# 查看镜像
docker images

# 删除镜像
docker rmi 镜像名称

# 查看运行容器(仅为启动中的)
docker ps 

# 查看运行容器(包含未启动)
docker ps -a

# 启动容器
docker start 容器名称/容器id

# 停止容器
docker stop 容器名称/容器id

Nodejs连接

初始化工程

# 创建文件夹并进入
mkdir queue-node-redis && cd queue-node-redis

# yarn 初始化
yarn init -y

# 下载redis包,
# 指定版本的原因是尽量减少道友们的失败几率 毕竟前端的工具迭代太快了
yarn add [email protected]   

创建 lib 与 utils 目录

├── .gitignore
├── lib
├── package.json
├── utils
│   └── redis.js
└── yarn.lock

utils/redis.js

const redis = require("redis");

const redisCreateClient = async (config) => {
   
  try {
   
    const client = redis.createClient({
   
      url: `redis://${
     config.host}:${
     config.port}`,
    });
    await client.connect();
    await client.select(config.db);
    console.log("redis connect success");
    return client;
  } catch (err
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值