2013-05-16 11 views
6

Nella mia app creo dinamicamente nuovi canali pubsub e potrebbero essercene troppi come 5k al giorno. In base alle richieste della mia app, qualsiasi canale viene utilizzato per un massimo di 5 minuti.Redis: come (o dovrei) cancello i canali pubub

Considerando questa situazione, migliaia di canali inutilizzati saranno presenti nell'app in una settimana. Quindi, come posso eliminare i canali non utilizzati o dovrei eliminarli. Memorizzati in memoria? Cosa succede ai messaggi pubblicati tramite loro, rimangono nella memoria dei redis?

grazie

+0

Dopo "i 5 minuti" la tua app invia un comando 'UNSUBSCRIBE'? – byterussian

+0

I miei client sono client web su socket.io, quindi l'utente può chiudere improvvisamente la scheda del browser e non potrei sapere se è ancora connesso o meno. Forse potrei gestirlo prendendo il timeout di socket.io o qualcosa del genere ma la cosa principale è che è garantito che "UNSUBSCRIBE'ing tutti gli abbonati provochino l'eliminazione del canale? – destan

+0

Non sicuro, prova. Ricordo che se un canale ha zero iscritti viene cancellato. Per il problema del messaggio, dopo vengono inviati i messaggi e ricevuti, non esiste più. – byterussian

risposta

10

I canali sono ambientali. Esistono solo mentre ci sono abbonamenti. Quindi: o chiama [P] UNSUBSCRIBE dalle connessioni che si sono iscritte, o chiudi le connessioni che si sono abbonate.

+0

grazie per la risposta, puoi specificare qualsiasi fonte per indicarlo? Non sono riuscito a trovare dettagli così dettagliati nei documenti. – destan

+1

@destan puoi misurare "info stats" prima e dopo (che descrive i conteggi degli abbonamenti) - abbastanza vicino? O potresti leggere la fonte? Ma in fondo so che "parlando agli autori" - la tecnologia ho paura –