Tôi hiện đang quan tâm đến việc xem kênh nào được đăng ký trong một ứng dụng phụ/quán rượu Redis mà tôi có. Khi một khách hàng kết nối với máy chủ của chúng tôi, chúng tôi đăng ký chúng vào một kênh đó trông giống như:Redis xuất bản/đăng ký: xem kênh nào hiện đang đăng ký
user:user_id
Lý do cho điều này là tôi muốn để có thể xem ai đang "online". Tôi hiện đang mù quáng gửi tin nhắn đến một kênh mà không biết liệu một khách hàng có trực tuyến hay không vì điều quan trọng là họ không nhận được các loại tin nhắn này.
Để nỗ lực làm cho ứng dụng của tôi thông minh hơn, tôi muốn có thể khám phá xem khách hàng có trực tuyến hay không sử dụng API pub/sub và nếu họ ngoại tuyến, hãy lưu trữ thư của họ vào hàng đợi redis riêng biệt mà tôi có thể thúc đẩy họ khi họ trở lại trực tuyến.
Điều này không phải chính xác 100%, nhưng chính xác hơn, càng tốt. Tôi giả sử một khóa chung không được tạo khi kênh được đăng ký, vì vậy tôi không thể làm điều gì đó tầm thường như:
redis-cli keys user*
để tìm tất cả người dùng trực tuyến. Một chiến lược khác mà tôi đã nghĩ đến là chỉ duy trì Redis của riêng mình bất cứ khi nào người dùng xuất bản hoặc tự xóa mình khỏi kênh (mà khách hàng sẽ tự động xử lý khi họ trực tuyến và đóng ứng dụng). Đó sẽ là một lớp phức tạp bổ sung mà tôi cần quản lý và tôi hy vọng có một cách tiếp cận tầm thường hơn với dữ liệu đã có sẵn.
Đề xuất tuyệt vời! Tôi đã có nhu cầu tương tự ngay bây giờ và quản lý để viết xung quanh nó bằng cách xuất bản 'null' cho kênh để có được số lượng thuê bao. Sau đó, trong người nghe tôi kiểm tra xem tin nhắn là Không có và bỏ qua nó nếu nó được. Cổ vũ người bạn đời! –