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

Pola terbaik untuk menangani perulangan async di Node.js

Kode di atas mungkin tidak melakukan apa yang Anda harapkan. Anda memulai setiap .get() secara berurutan, tetapi mereka mungkin tidak memanggil kembali secara berurutan — sehingga hasilnya dapat mengalir dalam urutan apa pun. Jika Anda ingin mengalirkan hasil alih-alih mengumpulkannya di memori, Anda perlu .get() secara berurutan.

Saya pikir perpustakaan async caolan membuat ini lebih mudah. Inilah salah satu cara Anda dapat menggunakannya untuk mendapatkan setiap item secara berurutan (peringatan, belum diuji):

app.get("/facility", function(req, res) {
    rc.keys("FACILITY*", function(err, replies) {
        var i = 0;
        res.write("[");
        async.forEachSeries(replies, function(reply, callback){
            rc.get(reply, function(err, reply) {
                if (err){
                    callback(err);
                    return;
                }
                res.write(reply);
                if (i < replies.length) {
                    res.write(",");
                }
                i++;
                callback();
            });
        }, function(err){
            if (err) {
                // Handle an error
            } else {
                res.end(']');
            }
        });
    });
});

Jika Anda tidak peduli dengan urutannya, gunakan saja async.forEach() sebagai gantinya.

Jika Anda tidak keberatan mengumpulkan hasilnya dan ingin hasilnya kembali secara berurutan, Anda dapat menggunakan async.map() seperti ini (peringatan, juga belum diuji):

app.get("/facility", function(req, res) {
    rc.keys("FACILITY*", function(err, replies) {
        async.map(replies, rc.get.bind(rc), function(err, replies){
            if (err) {
                // Handle an error
            } else {
                res.end('[' + replies.join(',') + ']');
            }
        });
    });
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Transaksi Redis &Skrip Lua yang Berjalan Lama

  2. Bagaimana cara meningkatkan kinerja Redis ketika 100% CPU? Berbagi? Klien .Net Tercepat?

  3. Bagaimana saya harus terhubung ke instans Redis dari fungsi AWS Lambda?

  4. Redis Cluster - siap produksi?

  5. Redis pada Benchmark Kinerja Azure – ScaleGrid untuk Redis™ vs. Azure Cache