Il mio modello mentale era quello di una "chat", in cui sono iscritto a un determinato canale e posso pubblicare messaggi su questo canale.Perché non posso avere un singolo client Redis che funge da PUB e Sub nella stessa connessione?
risposta
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.
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.
- 1. PUB/SUB ripristinabile con redis
- 2. Redis/RabbitMQ - Pub/Sub - Performances
- 3. Perché Redis ha funzionalità Pub/Sub?
- 4. Consumatori concorrenti su Redis Pub/Sub supportati?
- 5. Redis/Node.js - 2 client (1 pub/sub) che causano problemi con le scritture
- 6. Nodejs Pubblica dal client nel pub/sub
- 7. Cursori m/t disponibili verso Redis pub/sub
- 8. Qual è il modo corretto di gestire la connessione Redis in Tornado? (Async - Pub/Sub)
- 9. Utilizzo di Redis for Pub Sub. Vantaggi/svantaggi su RabbitMQ
- 10. Redis pub/sub per server di chat in node.js
- 11. ZeroMQ PUB/SUB: perché non funzionano più abbonati?
- 12. Il modello pub/sub di redis richiede connessioni permanenti ai redis?
- 13. Come progettare redis pub/sub per un sistema di messaggistica istantanea?
- 14. Indy TCP Client/Server con il client che funge da server
- 15. Celery come eventi pub/sub in rete
- 16. Redis Cluster vs ZeroMQ in Pub/Sub, per sistemi distribuiti scalati orizzontalmente
- 17. Redis GUARDA MULTI EXEC da un client
- 18. Redis serviceStack client di connessione pool
- 19. Sails.js semplice messaggistica privata (pub/sub e modelli)
- 20. Sto ricevendo messaggi duplicati nel mio cluster node.js/socket.io/redis pub/sub application
- 21. Comando Redis per ottenere tutti i canali disponibili per pub/sub?
- 22. differenza tra pattern pub-sub e push-pull in zeroMq
- 23. Perché avere un costruttore e un metodo principale nella stessa classe
- 24. Come si può avere una connessione TCP alla stessa porta?
- 25. Gestione della connessione a redis da Python
- 26. Qual è un buon modo per documentare sub/pub?
- 27. Implementazione della funzionalità Pub/Sub o SignalR su .NET 3.5?
- 28. Generazione automatica di contratto/documentazione per Pub/Sub RabbitMQ
- 29. Posso avere più file web.config in un singolo progetto web?
- 30. In che modo i client Redis implementano il pipelining?
fantastico! grazie molto. – Draconar