Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Apa cara yang tepat untuk menangani koneksi Redis di Tornado? (Asinkron - Pub/Sub)

Sedikit terlambat tapi, saya telah menggunakan tornado-redis. Ia bekerja dengan ioloop tornado dan tornado.gen modul

Pasang tornadoredis

Itu dapat diinstal dari pip

pip install tornadoredis

atau dengan setuptools

easy_install tornadoredis

tetapi Anda benar-benar tidak boleh melakukan itu. Anda juga bisa mengkloning repositori dan mengekstraknya. Kemudian jalankan

python setup.py build
python setup.py install

Hubungkan ke redis

Kode berikut masuk ke main.py atau yang setara

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

redis.connect dipanggil hanya sekali. Ini adalah panggilan pemblokiran, jadi itu harus dipanggil sebelum memulai ioloop utama. Objek koneksi yang sama dibagikan di antara semua penangan.

Anda dapat menambahkannya ke pengaturan aplikasi Anda seperti

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

Gunakan tornadoredis

Koneksi dapat digunakan di penangan sebagai self.settings['redis'] atau dapat ditambahkan sebagai properti dari kelas BaseHandler. Penangan permintaan Anda mensubklasifikasikan kelas itu dan mengakses properti.

class BaseHandler(tornado.web.RequestHandler):

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

Untuk berkomunikasi dengan redis, tornado.web.asynchronous dan tornado.gen.engine dekorator digunakan

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}

Informasi tambahan

Lebih banyak contoh dan fitur lain seperti penyatuan koneksi dan saluran pipa dapat ditemukan di repo github.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Penerusan port dengan nginx dari java

  2. Hitung ulang pemindaian:Bagaimana cara memaksa SCAN untuk mengembalikan semua kunci yang cocok dengan suatu pola?

  3. Kompresi di node.js

  4. Apakah ada analog MGET untuk hash Redis?

  5. Bagaimana cara menggunakan kumpulan koneksi dengan benar di redis?