Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Asynchroniczne wykonywanie poleceń redis

Przypuszczam, że moduł asyncjs, którego używasz, jest udokumentowany pod adresem:https://github.com/fjakobs/async.js

W twoim kodzie:

  • list() to generator. Pozwala na iterację tablicy przez asyncjs. Tablica jest tablicą wartości.
  • call() to maper, który wywołuje każda sztuka. W związku z tym elementy muszą być wywoływane (tj. muszą być wywołaniami zwrotnymi).
  • end() to końcowy punkt, wywoływany po zakończeniu iteracji. Jako parametr otrzymujesz tylko ostatnią wartość sekwencji (nie całą sekwencję).

Otrzymałeś „[TypeError:Object true ma metodę 'apply'] " błąd, ponieważ zbudowana lista nie jest listą wywołań zwrotnych. Jest to lista wartości.

Oto kod, który powinien zrobić to, co chcesz:

var redis = require("redis");
var client = redis.createClient();
var async = require("asyncjs");

function main() {

  var siteId = 1;

  async
    .list(['x','y','z'])
    .map( function (item,next) {
      client.hincrby('traffic:' + siteId, item, 1, function (err,res) {
        next(err,res)
      })
    })
    .toArray( function(err,res) {
      console.log(err); 
      console.log(res); 
    });
}

main()

Pamiętaj, że używamy map() zamiast call() i toArray() zamiast end().




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Czy istnieje ograniczenie liczby argumentów, które mogą obsłużyć polecenia redis, takie jak ZADD lub HMGET?

  2. Proste użycie EM::Synchrony#sync powoduje 'root fiber' FiberError — moja wina?

  3. Jak zwrócić flask render_template po zakończeniu pracy w tle Redis?

  4. Szybszy sposób iteracji wszystkich kluczy i wartości w redis db

  5. Jak Redis osiąga wysoką przepustowość i wydajność?