sql >> Database >  >> NoSQL >> Redis

Hoe Redis-verbindingen configureren met Rails 4, Puma en Sidekiq?

Redis is single-threaded, maar geschreven in pure C, gebruikt een gebeurtenislus binnenin en behandelt verbindingen asynchroon, dus het aantal verbindingen heeft geen grote invloed op het aantal verzoeken, mits hetzelfde aantal verzoeken. Het kan verzoeken sneller afhandelen dan uw toepassing ze kan genereren vanwege netwerkvertraging, ruby ​​is langzamer dan gecompileerde en geoptimaliseerde C, enz., dus u hoeft zich geen zorgen te maken dat het single-threaded is.

Een toenemend aantal verbindingen is gunstig voor gelijktijdige verzoeken van verschillende threads, omdat het niet nodig is om te wachten op een reactie via het netwerk om de verbinding te ontgrendelen, en ruby ​​kan parallelle IO's uitvoeren.

U kunt ook zien of de pool te klein is wanneer de uitchecktijden voor verbindingen slechter worden dan u verwacht/tolereert en de bijbehorende thread/worker inactief is terwijl u erop wacht, dus benchmark uw code en kijk goed naar uw daadwerkelijke gebruiks- en gedragspatronen.

Aan de andere kant zou ik afraden om alle limieten voor het aantal verbindingen te gebruiken, er zijn momenten waarop u deze extra verbindingen misschien nodig hebt. Bijvoorbeeld:

  • voor gracieus/"zero downtime" dyno herstart ("preboot") heb je twee keer zoveel verbindingen nodig, aangezien oude processen nog enige tijd draaien
  • Behoud ten minste één vrije verbinding voor debuggen in noodgevallen, aangezien u mogelijk vanaf de console/direct verbinding wilt kunnen maken en wilt zien welke gegevens erin zitten wanneer er een onverwachte hoge belasting komt



  1. Mongoose/MongoDB resultaatvelden verschijnen ongedefinieerd in Javascript

  2. BadValue Ongeldige of geen gebruikerslandinstelling ingesteld. Zorg ervoor dat de omgevingsvariabelen LANG en/of LC_* correct zijn ingesteld

  3. Hoe kan ik zien wanneer mijn sleutel is opgeslagen in Redis Cache/db?

  4. Apache CouchDB installeren op Debian 9