node hkeys redis publishing

hkeys - redis mq



Evento en clave expira (3)

El evento caducado incorporado generado por la notificación de espacio de teclas no es exacto. Vea la última sección de http://redis.io/topics/notifications

Redis caduca las claves con un tiempo de vida asociado de dos maneras:

  1. Cuando se accede a la clave mediante un comando y se encuentra caducada.

  2. A través de un sistema en segundo plano que busca claves caducadas en segundo plano, de forma incremental, para poder también recopilar claves a las que nunca se ha accedido.

Los eventos caducados se generan cuando se accede a una clave y uno de los sistemas anteriores determina que caducó, por lo que no hay garantías de que el servidor Redis pueda generar el evento caducado en el momento en que la clave esté activa. alcanza el valor de cero. Si ningún comando apunta a la clave constantemente, y hay muchas claves con un TTL asociado, puede haber un retraso significativo entre el momento en que el tiempo de activación de la clave se pone en cero y el momento en que se genera el evento caducado.

Para implementar completamente un evento expire exprue, es posible que deba implementarlo usted mismo. Por ejemplo, al usar una lista ordenada (o árbol AVL) ordenada por el tiempo de caducidad, y leer continuamente la cola de la lista (unqueue). Si el lector encuentra que el tiempo de caducidad no se ha alcanzado, se pone en espera (caduca el tiempo, ahora). De esta manera, la precisión se puede controlar dentro de 10s ms.

Me pregunto si hay una función en redis que me permita obtener todas las claves caducadas (me refiero a algún tipo de evento, que me da la oportunidad de recuperar todos los registros de caducidad). El propósito de esto es guardar los valores antiguos en otra base de datos. He oído que es posible utilizar un mecanismo de publicación, pero Google no puede ayudarnos con esta idea.


La versión de desarrollo actual de redis contiene una nueva característica: notificaciones de espacio de teclas. Documentación: http://redis.io/topics/notifications

Las notificaciones de Keyspace permiten que los clientes se suscriban a canales de Pub / Sub para recibir eventos que afecten el conjunto de datos de Redis de alguna manera.

Ejemplos de los eventos que es posible recibir son los siguientes:

  • Todos los comandos que afectan a una clave dada.
  • Todas las teclas que reciban una operación LPUSH.
  • Todas las claves que caducan en la base de datos 0.

Con suerte, llegará al establo pronto.

Por cierto, no será muy útil para ayudarlo a guardar valores de claves caducadas. Cuando se dispara el evento de expiración, el valor ya se ha ido.


Utilice redis-scheduler .
Puedes encontrarlo here