Redis
 sql >> база данни >  >> NoSQL >> Redis

Как да проектираме redis pub/sub за система за незабавни съобщения?

Както винаги, трябва да сравните неща като това за вашия собствен случай на употреба - не е възможно да дадете общи съвети. Може да се наложи да увеличите максималния брой отворени файлове във вашата система, за цялата система или за потребителя на redis. Това се отнася и за потребителя, който работи с вашия уеб сървър, разбира се.

Въпреки това трябва да се уверите, че слушате за socket.on('disconnect') и quit() абоната на redis, когато потребител напусне. Може също да се интересувате да знаете, че socket.io има бекенд на redis, който използва redis pub/sub, и също така има концепцията за стаи, така че може да си спестите някои проблеми, като го използвате, тъй като вече сте зависими от сокета .io.

Редактиране: След бърза проверка получавам това съобщение за грешка от Redis след 991 абонати:

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

Ето от 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

Моята система (Ubuntu 11.11) идва с nofile по подразбиране ограничение от 1024, така че моят бърз тест трябва да се провали след 992 свързани клиента, което изглежда точно от теста (имам и един клиент за издателя). Моето предложение към вас е да проверите вашия nofile ограничение (в моята система е в /etc/security/limits.{conf,d/*} и вашите redis maxclients настройка и след това еталон, еталон, еталон!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Промяна на разрешението за файл по подразбиране при redis dump

  2. Запитване с много полета в Redis с помощта на Redis Spring

  3. Как redis разделя екземпляра с множество потребители, работещи на същия сървър?

  4. 'session' е недефиниран при използване на express / redis за съхранение на сесии

  5. Не можа да се зареди файл или сглобка System.Runtime.CompilerServices.Unsafe