Redis
 sql >> база данни >  >> NoSQL >> Redis

Асинхронно изпълнение на redis команди

Предполагам, че модулът asyncjs, който използвате, е документираният на:https://github.com/fjakobs/async.js

Във вашия код:

  • list() е генератор. Позволява масивът да бъде повторен от asyncjs. Масивът е масив от стойности.
  • call() е картограф, който извиква всеки артикул. Следователно елементите трябва да могат да бъдат извиквани (т.е. те трябва да бъдат обратни извиквания).
  • end() е крайна точка на прекратяване, която се извиква, когато итерацията приключи. Като параметър получавате само последната стойност на последователността (не цялата последователност).

Получихте "[TypeError:Object true has no method 'apply'] " грешка, защото списъкът, който сте изградили, не е списък с обратни извиквания. Това е списък със стойности.

Ето някакъв код, който трябва да прави това, което искате:

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

Моля, имайте предвид, че тук използваме map() вместо call() и toArray() вместо end().




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Грешка в полето в обект 'target' на поле '':отхвърлена стойност []; кодове [typeMismatch.target.,typeMismatch.,typeMismatch.java.util.Date,typeMismatch]

  2. Как да накарам клиента да изтегли много голям файл, който се генерира в движение

  3. Автоматичното свързване на Spring Boot redisTemplate не бе успешно

  4. Алтернативи на вложени структури в Redis?

  5. SSL свързаност към Redis със StackExchange.Redis