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