Как исправить аргументы ошибки HSET в Redis? - PullRequest
0 голосов
/ 04 января 2019

Я реализую слой кэширования в NodeJS и MongoDB, используя Redis. Я довольно новичок в Redis. Поэтому у меня возникли проблемы, когда я пытаюсь автоматически очистить кеш после заданного времени. Я получаю ошибку

ReplyError: ERR wrong number of arguments for 'hset' command

Это мой кодовый блок

mongoose.Query.prototype.exec = async function() {

  const key = JSON.stringify(
      Object.assign({}, this.getQuery(), {collection: 
      this.mongooseCollection.name})
  );
  const cachedValue = await client.hget(this.hashKey, key);

  if(cachedValue) {
      const parsedDoc = JSON.parse(cachedValue);

      return Array.isArray(parsedDoc) ? parsedDoc.map(doc => new 
      this.model(doc)) : new this.model(parsedDoc);
  }

  const result = await exec.apply(this, arguments);

  client.hset(this.hashKey, key, JSON.stringify(result), 'EX', 10);

  return result;
}

1 Ответ

0 голосов
/ 04 января 2019

Redis HSET принимает только 3 аргумента. Если вы хотите сохранить несколько ключей в одном вызове, вы должны использовать HMSET.

Справка:

https://redis.io/commands/hset

https://redis.io/commands/hmset

client.hmset(this.hashKey, key, JSON.stringify(result), 'EX', 10);

должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...