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

Какъв е правилният начин за справяне с връзката с Redis в Tornado? (Асинхронно – Pub/Sub)

Малко късно, но използвах tornado-redis. Работи с ioloop на tornado и tornado.gen модул

Инсталирайте tornadoredis

Може да се инсталира от pip

pip install tornadoredis

или с инструменти за настройка

easy_install tornadoredis

но наистина не бива да правиш това. Можете също да клонирате хранилището и да го извлечете. След това стартирайте

python setup.py build
python setup.py install

Свържете се с redis

Следният код влиза във вашия main.py или еквивалентен

redis_conn = tornadoredis.Client('hostname', 'port')
redis_conn.connect()

redis.connect се извиква само веднъж. Това е блокиращо повикване, така че трябва да бъде извикано преди стартиране на главния ioloop. Един и същ обект на връзка се споделя между всички манипулатори.

Можете да го добавите към настройките на приложението си като

settings = {
    redis = redis_conn
}
app = tornado.web.Application([('/.*', Handler),],
                              **settings)

Използвайте tornadoredis

Връзката може да се използва в манипулатори като self.settings['redis'] или може да се добави като свойство на класа BaseHandler. Вашите манипулатори на заявки подкласват този клас и имат достъп до свойството.

class BaseHandler(tornado.web.RequestHandler):

    @property
    def redis():
        return self.settings['redis']

За комуникация с redis, tornado.web.asynchronous и tornado.gen.engine се използват декоратори

class SomeHandler(BaseHandler):

    @tornado.web.asynchronous
    @tornado.gen.engine
    def get(self):
        foo = yield gen.Task(self.redis.get, 'foo')
        self.render('sometemplate.html', {'foo': foo}

Допълнителна информация

Още примери и други функции, като обединяване на връзки и тръбопроводи, можете да намерите в репото на github.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да конфигурирам клиента на Node Redis да хвърля незабавно грешки, когато връзката е неуспешна? [ЧЕТЕТЕ ПОДРОБНОСТИ]

  2. Сравнителен анализ на Couchbase разкрива много бавни INSERT и GETs (използвайки операции KeyValue); по-бавно от постоянните MySQL данни

  3. Stackexchange.Redis защо ConnectionMultiplexer.Connect установява две клиентски връзки?

  4. LogicException:Моля, уверете се, че разширението PHP Redis е инсталирано и активирано

  5. Mac(os x):Има ли начин да инсталирате САМО redis-cli?