Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 如何使用节点接收Redis过期事件?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想听听redis过期的事件.
我在我的redis.conf上配置了notify-keyspace-events“AKE”,这是我在节点上的代码

const redis = require('redis');
const client = redis.createClient();
const subscriber = redis.createClient();
const KEY_EXPIRING_TIME = 10; // seconds

client.setex('myKey',KEY_EXPIRING_TIME,'myValue');

subscriber.on('message',function(chAnnel,msg) {
  console.log( `On ${ChAnnel} received ${msg} event`);
});

subscriber.subscribe('myKey',function (err) {
  console.log('subscribed!');
});

我希望在10秒内看到事件被触发.
setex命令工作正常,在10秒内密钥不在数据库中,我在尝试捕获事件时遇到问题.

我究竟做错了什么?

解决方法

方法1: –

必须使用seTinterval函数来检查值是否定期过期.我知道这不等于听事件.但是,它间接地起到了作用.

以下代码每5秒检查一次值.

const redis = require('redis');
const client = redis.createClient();
const subscriber = redis.createClient();
const KEY_EXPIRING_TIME = 10; // seconds

var args = ['myKey','myValue'];


client.setex('myKey',function (err) {
  console.log('subscribed!');
});

seTinterval(function() {  
  client.get('myKey',function(err,value) {
    if (err) {
      throw err;
    }
    if (value) {
      console.log('value:',value);
    }
    else {
      console.log('value is gone');
      process.exit();
    }
  });
},5e3);

方法2: –

redis-notifier可用于收听事件.但是,它需要Python> = v2.5.0& < 3.0.0以便安装此软件包.

redis-notifier

var redisNotifier = require('redis-notifier');

var eventNotifier = new redisNotifier(redis,{
  redis : { host : '127.0.0.1',port : 6379 },expired : true,evicted : true,logLevel : 'DEBUG' //Defaults To INFO 
});

//Listen for event emission 
eventNotifier.on('message',function(pattern,chAnnelPattern,emittedKey) {
  var chAnnel = this.parsemessageChAnnel(chAnnelPattern);
  switch(chAnnel.key) {
    case 'expired':
        this._handleExpired(emittedKey);
      break;
    case "evicted":
      this._handleEvicted(emittedKey);
      break;
    default:
      logger.debug("Unrecognized ChAnnel Type:" + chAnnel.typE);
  }
});
@H_874_41@

大佬总结

以上是大佬教程为你收集整理的node.js – 如何使用节点接收Redis过期事件?全部内容,希望文章能够帮你解决node.js – 如何使用节点接收Redis过期事件?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。