sql >> Databáze >  >> NoSQL >> Redis

Asynchronní provádění příkazů redis

Předpokládám, že modul asyncjs, který používáte, je zdokumentovaný na adrese:https://github.com/fjakobs/async.js

Ve vašem kódu:

  • list() je generátor. Umožňuje iteraci pole pomocí asyncjs. Pole je pole hodnot.
  • call() je mapovač, který volá každý předmět. Položky proto musí být volatelné (tj. musí to být zpětná volání).
  • end() je koncový bod, který se volá po skončení iterace. Jako parametr získáte pouze poslední hodnotu sekvence (nikoli celou sekvenci).

Máte "[TypeError:Object true has no method 'apply'] ", protože seznam, který jste vytvořili, není seznam zpětných volání. Je to seznam hodnot.

Zde je nějaký kód, který by měl dělat to, co chcete:

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()

Upozorňujeme, že zde používáme map() místo call() a toArray() místo end().




  1. Jak zacházet s páry uživatelů a soketů pomocí node.js + redis

  2. Výpis transakcí a sledování v Redis

  3. Jak mohu napsat agregaci, aniž bych překročil maximální velikost dokumentu?

  4. Vytvořte agregaci filtrů na jaře