sql >> Database teknologi >  >> NoSQL >> Redis

Hvordan forespørger du *korrekt* Redis fra Tornado?

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.



  1. Datamigrering med Redis

  2. MongoDB feltrækkefølge og dokumentpositionsændring efter opdatering

  3. 2 måder at begrænse de dokumenter, der returneres i MongoDB

  4. Eksporter resultatet af mongodb-aggregationsramme til en ny samling