Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Cách thích hợp để xử lý kết nối Redis trong Tornado là gì? (Không đồng bộ - Pub / Sub)

Hơi muộn nhưng tôi đã sử dụng tornado-redis. Nó hoạt động với ioloop của tornado và tornado.gen mô-đun

Cài đặt tornadoredis

Nó có thể được cài đặt từ pip

pip install tornadoredis

hoặc với các công cụ thiết lập

easy_install tornadoredis

nhưng bạn thực sự không nên làm điều đó. Bạn cũng có thể sao chép kho lưu trữ và giải nén nó. Sau đó chạy

python setup.py build
python setup.py install

Kết nối với redis

Đoạn mã sau đi trong main.py hoặc mã tương đương của bạn

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

redis.connect chỉ được gọi một lần. Nó là một cuộc gọi chặn, vì vậy nó nên được gọi trước khi bắt đầu ioloop chính. Đối tượng kết nối giống nhau được chia sẻ giữa tất cả các trình xử lý.

Bạn có thể thêm nó vào cài đặt ứng dụng của mình như

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

Sử dụng tornadoredis

Kết nối có thể được sử dụng trong trình xử lý dưới dạng self.settings['redis'] hoặc nó có thể được thêm vào như một thuộc tính của lớp BaseHandler. Các trình xử lý yêu cầu của bạn phân loại lớp đó và truy cập thuộc tính.

class BaseHandler(tornado.web.RequestHandler):

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

Để giao tiếp với redis, tornado.web.asynchronoustornado.gen.engine trang trí được sử dụng

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}

Thông tin bổ sung

Bạn có thể tìm thấy thêm các ví dụ và các tính năng khác như gộp kết nối và đường ống tại kho github.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách giữ cho máy chủ redis hoạt động

  2. MongoDB so với Redis và Cassandra cho giải pháp lưu trữ hàng tạm thời, ghi nhanh

  3. Có bất kỳ cơ chế khóa nào trong Azure Redis Cache khi cập nhật một mục không?

  4. Xuất bản đăng ký với nodejs và redis (node_redis)

  5. Khu vực thông báo và tin tức bằng cách sử dụng Redis