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

Jak skonfigurować połączenia Redis z Rails 4, Puma i Sidekiq?

Redis jest jednowątkowy, ale napisany w czystym C, wykorzystuje pętlę zdarzeń wewnątrz i obsługuje połączenia asynchronicznie, więc liczba połączeń nie ma na nią wpływu przy takiej samej liczbie żądań. Jest w stanie obsłużyć żądania szybciej niż Twoja aplikacja może je wygenerować z powodu opóźnień w sieci, ruby ​​jest wolniejszy niż skompilowany i zoptymalizowany C itp., więc nie musisz się martwić, że jest jednowątkowy.

Rosnąca liczba połączeń jest korzystna dla równoczesnych żądań z różnych wątków, ponieważ nie trzeba czekać na odpowiedź przez sieć, aby odblokować połączenie, a ruby ​​może wykonywać równoległe operacje IO.

Możesz również stwierdzić, czy pula jest zbyt mała, gdy czasy sprawdzania połączenia stają się gorsze niż oczekiwałeś/tolerujesz, a odpowiedni wątek/pracownik jest bezczynny podczas oczekiwania na to, więc porównaj swój kod i dobrze przyjrzyj się swoim rzeczywistym wzorcom użytkowania i zachowania.

Z drugiej strony odradzałbym używanie całego limitu liczby połączeń, są chwile, kiedy możesz potrzebować tych dodatkowych połączeń. Na przykład:

  • dla łagodnego/"zero przestojów" restartów dyno ("preboot") potrzebujesz dwa razy więcej połączeń, ponieważ stare procesy wciąż działają przez jakiś czas
  • zachowaj co najmniej jedno wolne połączenie do awaryjnego debugowania, ponieważ możesz chcieć połączyć się z konsoli/bezpośrednio i zobaczyć, jakie dane są w środku, gdy pojawi się nieoczekiwane duże obciążenie



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nie można skanować przy użyciu szablonu redis

  2. jak mogę uruchomić sesje za pomocą redis, express i socket.io?

  3. Nginx lua redis plik cookie nie ustawia się

  4. Przekaż referencję do instancji Redis do Gorilla/Mux Handler

  5. Skrypt Redis Lua implementujący CAS (sprawdź i ustaw)?