Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jak zaprojektować redis pub/sub dla systemu wiadomości błyskawicznych?

Jak zawsze, musisz porównywać takie rzeczy do własnego przypadku użycia — nie jest możliwe udzielenie ogólnych porad. Może być konieczne zwiększenie maksymalnej liczby otwartych plików w systemie, zarówno dla całego systemu, jak i dla użytkownika redis. Oczywiście dotyczy to również użytkownika uruchamiającego serwer WWW.

To powiedziawszy, powinieneś upewnić się, że słuchasz socket.on('disconnect') i quit() subskrybent redis, gdy użytkownik odchodzi. Możesz również zainteresować się tym, że socket.io ma zaplecze redis, które wykorzystuje redis pub/sub, a także ma koncepcję pokoi, więc możesz zaoszczędzić sobie kłopotów, używając tego, ponieważ już jesteś zależny od gniazda .io.

Edytuj: Po szybkim sprawdzeniu otrzymuję ten komunikat o błędzie od Redis po 991 subskrybentach:

Ready check failed: Error: Error: ERR max number of clients reached

Oto z domyślnego redis.conf :

# Set the max number of connected clients at the same time. By default
# this limit is set to 10000 clients, however if the Redis server is not
# able ot configure the process file limit to allow for the specified limit
# the max number of allowed clients is set to the current file limit
# minus 32 (as Redis reserves a few file descriptors for internal uses).
#
# Once the limit is reached Redis will close all the new connections sending
# an error 'max number of clients reached'.
#
# maxclients 10000

Mój system (Ubuntu 11.11) ma domyślny nofile limit 1024, więc mój szybki test powinien zakończyć się niepowodzeniem po 992 podłączonych klientach, co wydaje się być tuż po teście (mam też jednego klienta dla wydawcy). Moja sugestia to sprawdzenie swojego nofile limit (w moim systemie jest w /etc/security/limits.{conf,d/*} i redis maxclients ustawienie, a następnie benchmark, benchmark, benchmark!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pamięć podręczna aplikacji vs. hibernacja pamięci podręcznej drugiego poziomu, której użyć?

  2. Transakcje Redis

  3. Korzystanie z zestawów Redis

  4. Czy istnieje sposób pracy z sesjami bez blokowania w witrynie ASP.Net MVC?

  5. Używanie Redis do buforowania wyników SQL