sql >> Databasteknik >  >> NoSQL >> Redis

Hur designar man redis pub/sub för ett snabbmeddelandesystem?

Som alltid måste du jämföra saker som detta för ditt eget bruk -- det är inte möjligt att ge allmänna råd. Du kan behöva öka det maximala antalet öppna filer på ditt system, antingen för hela systemet eller för Redis-användaren. Detta gäller naturligtvis även för användaren som kör din webbserver.

Som sagt, du bör se till att lyssna efter socket.on('disconnect') och quit() redis-abonnenten när en användare lämnar. Du kanske också är intresserad av att veta att socket.io har en redis backend, som utnyttjar redis pub/sub, och den har också konceptet med rum, så du kan spara dig själv lite problem genom att använda det eftersom du redan är beroende av socket .io.

Redigera: Efter en snabb kontroll får jag detta felmeddelande från Redis efter 991 prenumeranter:

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

Här är från standarden 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

Mitt system (Ubuntu 11.11) kommer med en standard nofile gräns på 1024, så mitt snabbtest bör misslyckas efter 992 anslutna klienter, vilket verkar ungefär direkt från testet (jag har också en klient för utgivaren). Mitt förslag till dig är att inspektera din nofile limit (på mitt system finns det i /etc/security/limits.{conf,d/*} och dina redis maxclients inställning, och sedan benchmark, benchmark, benchmark!




  1. Hur man hittar min värde i mongodb

  2. 3 sätt att dölja ett index från frågeplanen i MongoDB

  3. MongoDB:Kombinera data från flera samlingar till en..hur?

  4. Om char b-prefix i Python3.4.1-klienten anslut till redis