我正在使用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;
}
答案 0 :(得分:1)
Redis HSET
仅接受3个参数。如果要在一个呼叫中存储多个密钥,则应使用HMSET
。
参考:
https://redis.io/commands/hset
client.hmset(this.hashKey, key, JSON.stringify(result), 'EX', 10);
应该工作。