Когато става въпрос за блокиране на команди като BLPOP или слушане на Pub/Sub канал, ще ви е необходим асинхронен клиент като tornado-redis. Можете да започнете с тази демонстрация, за да видите как клиентът tornado-redis може да се използва за разработване на просто приложение за публичен чат.
Но аз бих препоръчал да използвате синхронния redis-py клиент във връзка с hiredis за повечето други случаи.
Основното предимство на асинхронния клиент е, че вашият сървър може да обработва входящи заявки, докато чака отговор на Redis сървъра. Сървърът Redis обаче е толкова бърз, че в повечето случаи излишните разходи за настройка на асинхронни обратни извиквания във вашето приложение Tornado добавят повече към общото време за обработка на заявката, отколкото времето, прекарано в чакане на отговор на Redis сървъра.
Използвайки асинхронен клиент, можете да опитате да изпратите няколко заявки до сървъра Redis едновременно, но сървърът Redis е еднонишков (точно като сървъра на Tornado), така че ще отговаря на тези заявки една по една и няма да спечелите почти нищо. И всъщност не е нужно да изпращате няколко Redis команди едновременно до един и същ Redis сървър, стига да има тръбопроводи и команди като MGET/MSET.
Асинхронният клиент има някои предимства, когато използвате няколко екземпляра на Redis сървър, но аз предлагам да използвате синхронен (redis-py) клиент и прокси като twemproxy или този (последният поддържа конвейер и команди MGET/MSET).
Също така предлагам да не използвате обединяването на връзки, когато използвате клиента redis-py в приложения на Tornado . Просто създайте един Redis
екземпляр на обект за всяка база данни на Redis, към която се свързва вашето приложение.