sql >> Base de Datos >  >> NoSQL >> Redis

¿Cómo recibir eventos de caducidad de Redis con nodo?

De hecho, es posible escuchar la notificación de evento clave de tipo "caducada" utilizando un cliente suscrito al canal específico ('[email protected]__:expired' ) y escuchando su mensaje evento.

sin necesidad de setInterval / setTimeout o bibliotecas adicionales

Prueba de concepto (en funcionamiento:probado con 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)
}