Tak więc każdy „użytkownik” powinien mieć własnego klienta redis w ramach zdarzenia połączenia. Czy mam rację?
Właściwie nie jesteś :)
Rzecz w tym, że node.js bardzo różni się na przykład od PHP. node.js nie tworzy procesów potomnych na nowych połączeniach, co jest jednym z głównych powodów, dla których może z łatwością obsługiwać dużą liczbę jednoczesnych połączeń, w tym połączenia o długim czasie życia (Comet, Websockets itp.). node.js przetwarza zdarzenia sekwencyjnie przy użyciu kolejki zdarzeń w ramach jednego procesu. Jeśli chcesz użyć kilku procesów, aby skorzystać z serwerów wielordzeniowych lub wielu serwerów, będziesz musiał zrobić to ręcznie (jednak jak to zrobić, wykracza poza zakres tego pytania).
Dlatego doskonale słuszną strategią jest użycie jednego połączenia Redis (lub MySQL) do obsługi dużej liczby klientów. Pozwala to uniknąć narzutów związanych z tworzeniem i kończeniem połączenia z bazą danych dla każdego żądania klienta.