sql >> Databasteknik >  >> NoSQL >> Redis

Asynkron exekvering av redis-kommandon

Jag antar att asyncjs-modulen du använder är den som finns dokumenterad på:https://github.com/fjakobs/async.js

I din kod:

  • list() är en generator. Det gör att arrayen kan itereras av asyncjs. Matrisen är en matris med värden.
  • call() är en mappare som anropar varje sak. Objekten måste därför kunna anropas (dvs. de måste vara återuppringningar).
  • end() är en avslutningsslutpunkt, anropad när iterationen är över. Som parameter får du bara det sista värdet av sekvensen (inte hela sekvensen).

Du fick "[TypeError:Object true has no method 'apply'] " fel eftersom listan du har byggt inte är en lista över återuppringningar. Det är en lista med värden.

Här är lite kod som ska göra vad du vill:

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

Observera att vi här använder map() istället för call(), och toArray() istället för end().




  1. Custom Cascading in Spring Data MongoDB

  2. Hur man hittar en delsträng i ett fält i Mongodb

  3. Hur använder du $set i MongoDB för att uppdatera ett kapslat värde/inbäddat dokument?

  4. Importera data till en MongoDB-instans