大佬教程收集整理的这篇文章主要介绍了node.js – 如何使用节点接收Redis过期事件?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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秒内密钥不在数据库中,我在尝试捕获事件时遇到问题.
我究竟做错了什么?
必须使用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以便安装此软件包.
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); } });
以上是大佬教程为你收集整理的node.js – 如何使用节点接收Redis过期事件?全部内容,希望文章能够帮你解决node.js – 如何使用节点接收Redis过期事件?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。