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

Triển khai Pub / sub trong nodeJS

Để duy trì đối tượng, tôi đã thêm Redissupport bằng cách sử dụng node_redis. Sau đó, Ireplac đặt vòng lặp client.send trên loạt kênh với Redis pub / subas một lớp trừu tượng. Nhưng tôi nhận thấy rằng tôi cần tạo một ứng dụng khách newRedis cho mỗi người dùng đã đăng ký. Và tôi vẫn cần lưu trữ thông tin khách hàng socket.io để gửi tin nhắn khi xuất bản. Làm thế nào có thể được đó là? Có cách triển khai hoặc phát triển thêm nào khác (tốt hơn) mà tôi có thể thực hiện không? Bạn sẽ làm gì?

Có, bạn phải tạo một ứng dụng khách redis mới cho mọi yêu cầu io. Nó nặng và không thể mở rộng. Nhưng việc tạo một kết nối máy khách redis mới không tốn nhiều bộ nhớ. Vì vậy, nếu số lượng người dùng hệ thống của bạn không quá 5000 thì vẫn ổn. Để mở rộng quy mô, bạn có thể thêm máy chủ redis nô lệ để giải quyết vấn đề đăng ký và xuất bản nặng và nếu bạn lo lắng về việc tạo nhiều kết nối thì bạn có thể tăng uLIMIT hệ điều hành của mình.

Bạn không cần phải lưu trữ ứng dụng khách socket.io trong tin nhắn đã gửi. Khi redis nhận được tin nhắn kênh đã đăng ký. Nó sẽ gửi tin nhắn đến một ứng dụng khách io cụ thể.

subscribe.on("message",function(channel,message) { 
 var msg = { message: [client.sessionId, message] }; 
 buffer.push(msg);
 if (buffer.length 15) buffer.shift(); 
 client.send(msg); > });

Để đăng ký nhiều kênh. Tôi khuyên bạn nên lưu trữ trước tất cả người dùng có nhiều hơn một kênh (Bạn có thể sử dụng Mongodb lưu trữ hoặc redis).

var store = redis.createClient();
var subscriber= redis.createClient()

store.hgetall(UID, function(e, obj){
     subscriber.subscribe(obj.ChannelArray.toArray());
 })


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Thư viện / phương pháp giao tiếp liên quá trình node.js hiệu quả nhất là gì?

  2. Chạy Redis trên Travis CI

  3. Thư viện Redis Rentis có tạo chuỗi riêng cho các lệnh gọi lại không đồng bộ không

  4. Làm thế nào để sử dụng redis '`DUMP` và` RESTORE` (ngoại tuyến)?

  5. Giới thiệu về Redis Cluster Sharding - Ưu điểm, Hạn chế, Triển khai &Kết nối máy khách