sql >> Database teknologi >  >> NoSQL >> Redis

Hvordan modtager man Redis udløbsbegivenheder med node?

Det er faktisk muligt at lytte til "udløbet" type keyevent notifikation ved hjælp af en klient, der abonnerer på den specifikke kanal ('[email protected]__:expired' ) og lytter til dens besked begivenhed.

intet behov for setInterval / setTimeout eller yderligere biblioteker

Proof-of-concept (fungerer :testet med NodeJS v.9.4.0 )

const redis = require('redis')
const CONF = {db:3}
var pub, sub
//.: Activate "notify-keyspace-events" for expired type events
pub = redis.createClient(CONF)
pub.send_command('config', ['set','notify-keyspace-events','Ex'], SubscribeExpired)
//.: Subscribe to the "notify-keyspace-events" channel used for expired type events
function SubscribeExpired(e,r){
 sub = redis.createClient(CONF)
 const expired_subKey = '[email protected]'+CONF.db+'__:expired'
 sub.subscribe(expired_subKey,function(){
  console.log(' [i] Subscribed to "'+expired_subKey+'" event channel : '+r)
  sub.on('message',function (chan,msg){console.log('[expired]',msg)})
  TestKey()
 })
}
//.: For example (create a key & set to expire in 10 seconds)
function TestKey(){
 pub.set('testing','redis notify-keyspace-events : expired')
 pub.expire('testing',10)
}


  1. Hvorfor har Redis Pub/Sub-funktioner?

  2. Mongo DB objekt-id deserialisering ved hjælp af JSON serializer

  3. Hvilken NoSQL-database til ekstremt store datamængder

  4. MongoDB Seattle 2014