前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NodeJS使用Redis键的过期回调

NodeJS使用Redis键的过期回调

作者头像
治电小白菜
发布2020-08-25 15:55:49
2.3K0
发布2020-08-25 15:55:49
举报
文章被收录于专栏:技术综合技术综合

具体文档可以查看: https://cloud.tencent.com/developer/article/1685673

情况说明

当我支付宝创建订单后, 需要定时的把没有完成的订单给关闭, 这时候需要有个定时任务, 或者队列来完成, 不想安装兔子, 那就用本来就安装了的Redis来简单实现

步骤

1. 开启Redis通知事件

Centos中, 如果使用yum安装的话, 可以在 /etc/redis.conf查看配置

微信截图_20200325160355.png

可以在文件内搜索notify-keyspace-events来找到, 并去除前面的注释

微信截图_20200325155847.png

随后重启Redis

2. 安装ioredis

文档查看: https://github.com/luin/ioredis

代码语言:javascript
复制
yarn add ioredis

3. 写代码

代码语言:javascript
复制
const Redis = require('ioredis')
const CONF = {
  port: 6379,
  host: "127.0.0.1",
  db: 3
}

const redis = new Redis(CONF)

// 创建监听
redis.send_command('config', ['set', 'notify-keyspace-events', 'Ex'], subExpired)
// 存入一个四秒后会过期的键
redis.set('key', 'bar', 'EX', 4)
// 监听回调
function subExpired (err, res) {
  // 这里需要创建一个新的Redis对象
  // 因为 Connection in subscriber mode, only subscriber commands may be used
  const sub = new Redis(CONF)
  // 设置事件参数
  const expired_subKey = `__keyevent@${CONF.db}__:expired`
  sub.subscribe(expired_subKey, function () {
    sub.on('message', function (info, msg) {
      console.log(info, msg)
    })
  })
}

4.看结果

image.png

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 情况说明
  • 步骤
    • 1. 开启Redis通知事件
      • 2. 安装ioredis
        • 3. 写代码
          • 4.看结果
          相关产品与服务
          云数据库 Redis
          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档