Redis
 sql >> база данни >  >> NoSQL >> Redis

Как *правилно* запитвате Redis от Tornado?

Когато става въпрос за блокиране на команди като 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, към която се свързва вашето приложение.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Транзакции, въведени в Redis

  2. Redis - Lua таблици като връщани стойности - защо това не работи

  3. Как да премахнете Redis от слушателите на „съобщения“.

  4. Как да конфигурирам JedisConnectionFactory да използва SSL, така че да не получа грешката:JedisDataException:ERR некриптираната връзка е забранена?

  5. Използване на клиент StackExchange.Redis с Redis клъстер