如何在redis中使用hmset向散列添加数组

brvekthn  于 2023-02-28  发布在  Redis
关注(0)|答案(1)|浏览(208)

我在redis中以散列方式存储一些键/值。例如,我有这个json

{
"title": "CEO",
"originId": "52",
"status": "A"
}

我存储这个json的代码是:

await redis.hmset(`role-${roleId}`, { title, originId, status })

现在我想把一个ID数组作为一个必填字段添加到这个哈希表中,那么我怎样才能把这个数组添加到这个哈希表中呢?我的数组是这样的:

{
  "mandatories": ["119","120"],
 }
oxcyiej7

oxcyiej71#

您可以将它作为另一个字段添加到同一个哈希键中,但是要将数组字符串化。

await redis.hset(`role-${roleId}`, 'mandatories', JSON.stringify(mandatories))

这样你仍然可以HGETALL整个 role 对象数据,但是,你必须把ID数组作为一个整体来管理。
或者,可以将数组展开为列表、集或排序集。例如,要添加为 set,可以执行以下操作:

await redis.sadd(`role-${roleId}-mandatories`, mandatories)

注意,我们在键名中添加了'-mandatories',这里你将数组传递给node.js redis sadd 函数,它会将每个数组项添加为集合中的一个成员,这允许你直接操作强制项集合(SPOP、SREM、SISMEMBER等)。
请注意,根据Redis 4.0.0,HMSET被认为是过时的,请使用HSET

相关问题