添加json时,在Redis中'hset'命令的错误参数数量错误

时间:2019-12-16 12:17:44

标签: node.js redis hashmap

我问了this question,并根据答案重写了与此类似的代码:

await redis.hset(`origin-${originId}`, { title, status, location })

但是现在我得到一个错误,说: {ReplyError:'hset'命令的参数错误

我将我的Redis服务器升级到vesion 5.0.7。我应该如何解决这个问题?请帮我。

1 个答案:

答案 0 :(得分:1)

hset命令至少需要3个参数:哈希名称,键,值。

请参见the Redis documentation。您无法将JavaScript对象存储为Redis哈希。相反,您将需要扩展对象并使用hmset命令。这样的事情会起作用。

await redis.hset(`origin-${originId}`, 'title', title, 'status', status, 'location', location);

如果您有一个大型对象,并且要一次设置许多键,则需要先将其展开。这样的事情会起作用:

await redis.hset(`origin-${originId}`,  Object.entries(largeObject).flat());

编辑

看起来您现在可以use the hmset command进入node-redis,而不必散布参数。因此,只需执行此操作就足够了:

await redis.hmset(`origin-${originId}`,  largeObject);

此格式仅适用于hmset命令,不适用于hset命令。