Saya tidak tahu apa desain Anda, tetapi Anda dapat berlangganan dengan satu klien redis di beberapa saluran (setelah Anda berlangganan dengan klien, maka Anda hanya dapat berlangganan saluran lain atau berhenti berlangganan dalam hubungan ini:http://redis.io/commands /berlangganan), karena setelah Anda menerima pesan, Anda memiliki informasi lengkap dari saluran mana pesan ini berasal. Kemudian Anda dapat mendistribusikan pesan ini ke semua klien yang tertarik.
Ini sedikit membantu saya, karena saya dapat menempatkan jenis pesan dalam nama saluran dan kemudian secara dinamis memilih tindakan untuk setiap pesan dari fungsi kecil, daripada membuat langganan terpisah untuk setiap saluran dengan logika terpisah.
Di dalam server node.js saya, saya hanya memiliki 2 klien redis:
- klien sederhana untuk semua tindakan standar -
lpush
,sadd
dan seterusnya - klien langganan - yang mendengarkan pesan melalui saluran langganan, kemudian pesan ini didistribusikan ke semua sesi (disimpan sebagai set untuk setiap jenis saluran) menggunakan klien redis pertama.