2011-09-05 9 views

risposta

9

Poiché pub/sub è asincrono, il messaggio pubblicato potrebbe apparire in qualsiasi momento, anche quando si aspetta la risposta a un comando.

Anche se redis è a thread singolo, che normalmente impedisce questo genere di cose, la latenza di rete può causare alcuni effetti interessanti: a seconda del contenuto dei messaggi, è possibile ricevere una risposta valida a un comando prima che il server lo abbia effettivamente ricevuto .

Detto questo, si potrebbe probabilmente utilizzare una singola connessione se si voleva davvero - "non dovrebbe" non è lo stesso di "non può", e redis segue una semplice filosofia di design di non cercare di impedirti di spararti nel piede. Tuttavia, è molto più semplice aprire solo due connessioni al server. Se raggiungi i limiti di connessione con due connessioni per client, probabilmente ti imbatterai in problemi con una connessione per client abbastanza presto comunque.

+0

fantastico! grazie molto. – Draconar

3

Quando un client emette un SUBSCRIBE o PSUBSCRIBE, tale connessione viene inserita nella modalità "pub/sub". A quel punto, sono validi solo i comandi che modificano il set di richieste. Quando la serie di richieste è vuota, la connessione viene reinserita nella modalità regolare.

Se è necessario inviare comandi regolari a Redis in modalità pub/sub, è sufficiente aprire un'altra connessione.

Problemi correlati