sql >> Database >  >> NoSQL >> Redis

Asynchrone uitvoering van redis-opdrachten

Ik veronderstel dat de asyncjs-module die u gebruikt, degene is die is gedocumenteerd op:https://github.com/fjakobs/async.js

In je code:

  • list() is een generator. Hiermee kan de array worden herhaald door asyncjs. De array is een array van waarden.
  • call() is een mapper die aanroept elk voorwerp. De items moeten daarom opvraagbaar zijn (d.w.z. het moeten callbacks zijn).
  • end() is een eindpunt dat wordt aangeroepen als de iteratie voorbij is. Als parameter krijgt u alleen de laatste waarde van de reeks (niet de hele reeks).

Je hebt de "[TypeError:Object true has no method 'apply'] " fout omdat de lijst die u hebt gemaakt geen lijst met terugbelverzoeken is. Het is een lijst met waarden.

Hier is wat code die zou moeten doen wat je wilt:

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

Houd er rekening mee dat we hier map() gebruiken in plaats van call(), en toArray() in plaats van end().




  1. mongodb get _id als string in zoekquery

  2. Wat is het nut van meerdere Redis-databases?

  3. waarom neemt het geheugengebruik van redis niet af wanneer de helft van de toetsen wordt verwijderd?

  4. MongoDB GUI-client (platformonafhankelijk of Linux)