如何修复Redis中HSET的参数错误?

时间:2019-01-04 16:11:53

标签: javascript node.js redis

我正在使用Redis在NodeJS和MongoDB中实现缓存层。我是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 :(得分:1)

Redis HSET仅接受3个参数。如果要在一个呼叫中存储多个密钥,则应使用HMSET

参考:

webdriver.Firefox

https://redis.io/commands/hset

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

应该工作。