Desidero essere in grado di eseguire una richiamata quando vengono apportate modifiche alla mia raccolta redis. Il callback avrebbe preso la chiave e il valore come input. È possibile qualcosa del genere?Ascoltare le modifiche in Redis?
Grazie?
Desidero essere in grado di eseguire una richiamata quando vengono apportate modifiche alla mia raccolta redis. Il callback avrebbe preso la chiave e il valore come input. È possibile qualcosa del genere?Ascoltare le modifiche in Redis?
Grazie?
È anche possibile connettersi al server Redis come uno slave utilizzando il comando sync. Vedi Come Redis Replication Works? per una rapida introduzione.
L'output del comando sync ha due fasi. Nella prima fase, il server restituisce il file dump.rdb del database. Una volta inviato il file, inizia a inviare comandi nel protocollo Redis, che è anche il formato AOF.
Ecco il quadro ad alto livello di ciò che si può fare:
SYNC
Sembra un sacco di lavoro, ma si dovrebbe essere in grado di incidere questo abbastanza facilmente. E sarebbe anche una buona libreria open source!
EDIT: Sync v/s Monitor
Monitor
è un comando di debug. Il formato di risposta può (e ha) cambiare (d) nel tempo. Sync
viene utilizzato per Master -> Replica slave, quindi verrà supportato meglioMonitor
emetterà tutti i comandi, inclusi i comandi di sola lettura. Sync
otterrà solo i comandi che modificano i dati.Monitor
registrerà i singoli comandi eseguiti all'interno di uno script lua.Sync
trasferirà solo l'intero script lua, quindi dovrai analizzare lo script da solo. Questo è davvero un interruttore per sync
.Monitor
registrerà i comandi non riusciti, Sync
registrerà solo i comandi che modificano i dati. Ad esempio, il comando del non-existing-key
verrà registrato dal monitor ma non verrà visualizzato quando si esegue la sincronizzazione.Grazie Sripathi! Potresti darmi una panoramica di alto livello di questo vs usando il monitor per gli aggiornamenti? – fancy
@fancy vedi gli aggiornamenti alla mia risposta –
due opzioni:
Utilizzare MONITOR
comando - si ripercorre ogni comando che arriva a Redis ed è possibile analizzare e vedere quando la tua collezione viene toccato.
Se "si possiede" il codice che scrive nella raccolta, segnalare l'altro codice (la richiamata). È possibile utilizzare il canale Redis Pub/Sub per questo.
EDIT Redis è in realtà sta per implementare questa funzionalità nella versione 2.8. Vedere il post del blog di Antirez su questo: Redis keyspace changes notification system.
@fancy visualizzare gli aggiornamenti per la mia risposta –
risposta breve - no.
risposta leggermente più lunga - è possibile farlo solo se si aggiunge la pubblicazione su un canale specifico in redis PubSub nel client. o MONITOR utente per analizzare qualsiasi cosa diavolo sta succedendo in redis, ma se quel processo perde la connessione con redis - sei fregato.
<dependency>
<groupId>com.moilioncircle</groupId>
<artifactId>redis-replicator</artifactId>
<version>2.5.0</version>
</dependency>
Se si utilizza Java. redis-replicator
implementa il protocollo di replica redis. Maggiori dettagli si rimanda al references
Nel 2017
C'è ora una pubblicazione/sottoscrizione meccanismo che è possibile utilizzare con il modulo node-redis
. Vedere la documentazione specifica HERE. (Funziona anche con redis-mock
per i test)
È possibile avere più abbonati (ascoltatori) sullo stesso canale, che nel tuo caso sarebbe la chiave della tua raccolta.
campione veloce: (vedi sopra la documentazione per i dettagli di implementazione)
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]
Caratteristica relativa richiesta: https://github.com/antirez/redis/issues/83 –