sql >> Databasteknik >  >> NoSQL >> Redis

Vad är det korrekta sättet att hantera Redis-anslutning i Tornado? (Async - Pub/Sub)

Lite sent men jag har använt tornado-redis. Det fungerar med tornados ioloop och tornado.gen modul

Installera tornadoredis

Den kan installeras från pip

pip install tornadoredis

eller med inställningsverktyg

easy_install tornadoredis

men det borde du verkligen inte göra. Du kan också klona förvaret och extrahera det. Kör sedan

python setup.py build
python setup.py install

Anslut till redis

Följande kod finns i din main.py eller motsvarande

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

redis.connect anropas endast en gång. Det är ett blockerande samtal, så det bör anropas innan huvud-ioloopen startas. Samma anslutningsobjekt delas mellan alla hanterare.

Du kan lägga till det i dina programinställningar som

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

Använd tornadoredis

Anslutningen kan användas i hanterare som self.settings['redis'] eller så kan den läggas till som en egenskap för BaseHandler-klassen. Dina begäranhanterare underklassar den klassen och får tillgång till egenskapen.

class BaseHandler(tornado.web.RequestHandler):

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

För att kommunicera med redis, tornado.web.asynchronous och tornado.gen.engine dekoratorer används

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}

Extra information

Fler exempel och andra funktioner som anslutningspooling och pipelines finns på github-repo.



  1. Hur returnerar man bara en del av arrayen i MongoDB?

  2. Hur konfigurerar man MongoDB Java-drivrutin MongoOptions för produktionsanvändning?

  3. MongoDB - hämta dokument med maxattribut per grupp i en samling

  4. In-memory cache med LRU-utgång