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

Contoh penggunaan RedisStore di socket.io

tapi saya tidak mengerti bagaimana menggunakan RedisStore dalam kode itu akan berbeda dari menggunakan MemoryStore. Dapatkah seseorang menjelaskannya kepada saya?

Perbedaannya adalah saat menggunakan MemoryStore default , pesan apa pun yang Anda pancarkan di pekerja hanya akan dikirim ke klien yang terhubung ke pekerja yang sama, karena tidak ada IPC di antara pekerja. Menggunakan RedisStore , pesan Anda akan dipublikasikan ke server redis, tempat semua pekerja Anda berlangganan. Dengan demikian, pesan akan diambil dan disiarkan oleh semua pekerja, dan semua klien yang terhubung.

Juga apa perbedaan antara mengonfigurasi socket.io untuk menggunakan redisstore vs. membuat klien redis Anda sendiri dan menyetel/mendapatkan data Anda sendiri?

Saya tidak begitu akrab dengan RedisStore , jadi saya tidak yakin tentang semua perbedaan. Tetapi melakukannya sendiri akan menjadi praktik yang benar-benar valid. Dalam hal ini, Anda dapat memublikasikan semua pesan ke server redis, dan mendengarkan pesan yang ada di penangan soket Anda. Ini mungkin akan lebih bekerja untuk Anda, tetapi Anda juga akan memiliki kontrol lebih besar atas bagaimana Anda ingin mengaturnya. Saya sendiri pernah melakukan hal serupa:

// Publishing a message somewhere
var pub = redis.createClient();
pub.publish("messages", JSON.stringify({type: "foo", content: "bar"}));

// Socket handler
io.sockets.on("connection", function(socket) {
  var sub = redis.createClient();
  sub.subscribe("messages");
  sub.on("message", function(channel, message) {
    socket.send(message);
  });

  socket.on("disconnect", function() {
    sub.unsubscribe("messages");
    sub.quit();
  });
});

Ini juga berarti Anda harus mengurus sendiri perutean pesan yang lebih canggih, misalnya dengan memublikasikan/berlangganan ke saluran yang berbeda. Dengan RedisStore , Anda mendapatkan fungsionalitas itu secara gratis dengan menggunakan saluran socket.io (io.sockets.of("channel").emit(...) ).

Kelemahan yang berpotensi besar dengan ini adalah bahwa sesi socket.io tidak dibagikan di antara pekerja. Ini mungkin akan menimbulkan masalah jika Anda menggunakan transportasi pemungutan suara yang panjang.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ubuntu 16.04 systemd redis masalah dengan ulimit

  2. Bagaimana saya bisa membuat Webmachine dan edis bekerja sama?

  3. Redis dengan Resque dan Rails:Perintah ERR tidak diizinkan saat menggunakan memori> 'maxmemory'

  4. Redis:Tampilkan ukuran/ukuran basis data untuk kunci

  5. Cara mendapatkan panggilan balik saat kunci kedaluwarsa di REDIS