Når det kommer til at blokere kommandoer som BLPOP eller lytte til en Pub/Sub-kanal, har du brug for en asynkron klient som tornado-redis. Du kan starte med denne demo for at se, hvordan tornado-redis-klienten kan bruges til at udvikle en simpel offentlig chatapplikation.
Men jeg vil anbefale at bruge den synkrone redis-py-klient sammen med hirdis i de fleste andre tilfælde.
Den største fordel ved asynkron klient er, at din server kan håndtere indgående anmodninger, mens du venter på Redis-serversvar. Dog er Redis-serveren så hurtig, at en overhead ved opsætning af asynkrone tilbagekald i din Tornado-applikation i de fleste tilfælde føjer mere til den samlede tid for anmodningsbehandling end den tid, der bruges på at vente på Redis-serversvar.
Ved at bruge en asynkron klient kan du prøve at sende flere anmodninger til Redis-serveren på samme tid, men Redis-serveren er en enkelt-trådet (ligesom Tornado-serveren), så den besvarer disse anmodninger én efter én og du får næsten ingenting. Og faktisk behøver du ikke sende flere Redis-kommandoer på samme tid til den samme Redis-server, så længe der er pipelines og kommandoer som MGET/MSET.
En asynkron klient har nogle fordele, når du bruger flere Redis-serverforekomster, men jeg foreslår, at du bruger en synkron (redis-py) klient og en proxy som twemproxy eller denne (sidstnævnte understøtter pipelining og MGET/MSET-kommandoer).
Jeg foreslår også, at du ikke bruger forbindelsespooling, når du bruger redis-py-klienten i Tornado-applikationer . Bare opret en enkelt Redis
objektforekomst for hver Redis-database, som din applikation opretter forbindelse til.