Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Jaki jest właściwy sposób obsługi połączenia Redis w Tornado? (Asynchroniczny — Pub/Sub)

Trochę późno, ale używam tornado-redis. Działa z ioloop tornado i tornado.gen moduł

Zainstaluj Tornadoredis

Można go zainstalować z pip

pip install tornadoredis

lub za pomocą narzędzi konfiguracyjnych

easy_install tornadoredis

ale naprawdę nie powinieneś tego robić. Możesz także sklonować repozytorium i rozpakować je. Następnie uruchom

python setup.py build
python setup.py install

Połącz z redis

Poniższy kod trafia do twojego main.py lub odpowiednika

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

redis.connect jest wywoływany tylko raz. Jest to wywołanie blokujące, więc powinno zostać wywołane przed uruchomieniem głównej operacji ioloop. Ten sam obiekt połączenia jest współdzielony przez wszystkie programy obsługi.

Możesz dodać go do ustawień aplikacji, takich jak

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

Użyj tornadoredis

Połączenie może być używane w programach obsługi jako self.settings['redis'] lub można go dodać jako właściwość klasy BaseHandler. Twoje programy obsługi żądań podklasują tę klasę i uzyskują dostęp do właściwości.

class BaseHandler(tornado.web.RequestHandler):

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

Aby komunikować się z redis, tornado.web.asynchronous i tornado.gen.engine używane są dekoratory

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}

Dodatkowe informacje

Więcej przykładów i innych funkcji, takich jak łączenie połączeń i potoki, można znaleźć w repozytorium github.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak mogę wykonywać polecenia w redis bez żadnej odpowiedzi?

  2. Pizza Tribes - wieloosobowa strategia czasu rzeczywistego oparta na przeglądarce

  3. Najlepsza praktyka aktualizacji Redis za pomocą Sentinels?

  4. Używanie redis jako pamięci podręcznej LRU dla postgres

  5. phpredis na Fedorze 12