Deseo poder ejecutar una devolución de llamada cuando se realiza algún cambio en mi colección redis. La devolución de llamada tomaría la clave y el valor como entradas. Es algo como esto posible?¿Escuchas cambios en Redis?
Gracias?
Deseo poder ejecutar una devolución de llamada cuando se realiza algún cambio en mi colección redis. La devolución de llamada tomaría la clave y el valor como entradas. Es algo como esto posible?¿Escuchas cambios en Redis?
Gracias?
También puede conectarse al servidor Redis como un Esclavo utilizando el comando sync. Vea cómo Redis Replication Works? para una introducción rápida.
La salida del comando de sincronización tiene dos fases. En la primera fase, el servidor devuelve el archivo dump.rdb de la base de datos. Una vez que se envía el archivo, comienza a enviar comandos en el protocolo Redis, que también es el formato AOF.
Aquí está la foto de nivel alto de lo que puede hacer:
SYNC
Parece mucho trabajo, pero usted debería ser capaz de cortar este con bastante facilidad. ¡Y también sería una buena biblioteca de código abierto!
EDIT: sincronización v/s monitor
Monitor
es un comando de depuración. El formato de respuesta puede (y tiene) cambiar (d) a lo largo del tiempo. Sync
se utiliza para la replicación Master -> Slave, por lo que será mejor compatibleMonitor
emitirá todos los comandos, incluidos los comandos de solo lectura. Sync
solo obtendrá comandos que modifiquen datos.Monitor
registrará comandos individuales que se ejecutan dentro de una secuencia de comandos lua.Sync
solo transferirá la secuencia de comandos lua completa, por lo que tendrá que analizar el script usted mismo. Este es de hecho un factor decisivo para sync
.Monitor
registrará los comandos que no tuvieron éxito, Sync
solo registrará los comandos que modifican los datos. Por ejemplo, el comando del non-existing-key
se registrará en el monitor, pero no se mostrará cuando ejecute la sincronización.Sripathi! ¿Podría darme una descripción general de alto nivel de este vs usando el monitor para las actualizaciones? – fancy
@fancy ver actualizaciones de mi respuesta –
dos opciones:
Use MONITOR
comando - traza cada comando que llega a Redis y se puede analizar y ver cuando está siendo tocado su colección.
Si "posee" el código que escribe en la colección, señale su otro código (su devolución de llamada). Puede usar el canal Redis Pub/Sub para esto.
EDITAR Redis es en realidad va a implementar esta característica en la versión 2.8. Ver la publicación de blog de Antirez en esto: Redis keyspace changes notification system.
@fancy ver cambios a mi respuesta Gracias –
respuesta corta - no.
respuesta un poco más larga: puede hacerlo solo si agrega publicación a un canal específico en redis PubSub en su cliente. o el usuario MONITOR para analizar lo que sea que esté pasando en redis, pero si ese proceso pierde conexión con redis, estás jodido.
<dependency>
<groupId>com.moilioncircle</groupId>
<artifactId>redis-replicator</artifactId>
<version>2.5.0</version>
</dependency>
Si está utilizando Java. redis-replicator
implementa el protocolo de replicación de redis. Más detalles, consultar references
En 2017
Ahora hay un mecanismo de publicación/suscripción que se puede utilizar con node-redis
módulo. Consulte la documentación específica HERE. (También funciona con redis-mock
para probar)
Puede tener varios suscriptores (oyentes) en el mismo canal, que en su caso sería la clave de su colección.
muestra rápida: (ver arriba documentación para detalles de implementación)
sub.subscribe('myCollection');
sub.on('message', (channel, data) => {
// this is the callback you talked about
console.log(`${channel} is now ${data}`);
});
// ... later on ...
pub.publish('myCollection', [1,2,3])
// console will output:
// myCollection is now [1,2,3]
relacionada Pedido de funciones: https://github.com/antirez/redis/issues/83 –