sql >> Databasteknik >  >> NoSQL >> Redis

Hur frågar du *korrekt* Redis från Tornado?

När det gäller att blockera kommandon som BLPOP eller lyssna på en Pub/Sub-kanal behöver du en asynkron klient som tornado-redis. Du kan börja med den här demon för att se hur tornado-redis-klienten kan användas för att utveckla en enkel offentlig chattapplikation.

Men jag skulle rekommendera att du använder den synkrona redis-py-klienten tillsammans med hirdis för de flesta andra fall.

Den största fördelen med asynkron klient är att din server kan hantera inkommande förfrågningar medan du väntar på Redis-serversvar. Redis-servern är dock så snabb att i de flesta fall en omkostnad för att ställa in asynkrona återuppringningar i din Tornado-applikation lägger mer till den totala tiden för förfrågningsbehandling än den tid som ägnas åt att vänta på Redis-serversvar.

Med en asynkron klient kan du försöka skicka flera förfrågningar till Redis-servern samtidigt, men Redis-servern är en entrådig (precis som Tornado-server), så den kommer att svara på dessa förfrågningar en i taget och du vinner nästan ingenting. Och faktiskt, du behöver inte skicka flera Redis-kommandon samtidigt till samma Redis-server så länge det finns pipelines och kommandon som MGET/MSET.

En asynkron klient har vissa fördelar när du använder flera Redis-serverinstanser, men jag föreslår att du använder en synkron (redis-py) klient och en proxy som twemproxy eller den här (den senare stöder pipelining och MGET/MSET-kommandon).

Jag föreslår också att du inte använder anslutningspoolningen när du använder redis-py-klienten i Tornado-program . Skapa bara en enda Redis objektinstans för varje Redis-databas som din applikation ansluter till.



  1. SpringBoot Elasticache JedisMovedDataException:FLYTTAD

  2. Redis `SCAN`:hur bibehåller man en balans mellan nya inkommande nycklar som kan matcha och säkerställa ett slutligt resultat inom rimlig tid?

  3. Kan inte hitta modulen 'socket.io/node_modules/redis'

  4. doRedis returnerar fel i Windows 8 x64 för olika Redis-serverbyggen