sql >> Database teknologi >  >> NoSQL >> Redis

Hvordan designer man redis pub/sub til et onlinemeddelelsessystem?

Som altid skal du benchmarke ting som dette til din egen brug - det er ikke muligt at give generelle råd. Du skal muligvis øge det maksimale antal åbne filer på dit system, enten på hele systemet eller for Redis-brugeren. Dette gælder selvfølgelig også for den bruger, der kører din webserver.

Når det er sagt, skal du sørge for at lytte efter socket.on('disconnect') og quit() redis-abonnenten, når en bruger forlader. Du er måske også interesseret i at vide, at socket.io har en redis-backend, som udnytter redis pub/sub, og den har også konceptet med værelser, så du kan spare dig selv for nogle problemer ved at bruge det, da du allerede er afhængig af socket .io.

Rediger: Efter et hurtigt tjek får jeg denne fejlmeddelelse fra Redis efter 991 abonnenter:

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

Her er fra 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

Mit system (Ubuntu 11.11) kommer med en standard nofile grænse på 1024, så min hurtige test skulle mislykkes efter 992 tilsluttede klienter, hvilket synes omtrent lige fra testen (jeg har også en klient til udgiveren). Mit forslag til dig er at inspicere din nofile limit (på mit system er det i /etc/security/limits.{conf,d/*} og dine redis maxclients indstilling, og derefter benchmark, benchmark, benchmark!




  1. Antallet af udløbende nøgler opført efter info-kommando på redis slave er ikke i overensstemmelse med det, jeg ser

  2. Sådan gør du:Indekser data fra S3 ved hjælp af CDP Data Hub

  3. Redis replikering og redis sharding (cluster) forskel

  4. Sådan tjekker du forbindelsen til mongodb