多重pipe道HGETALL与使用MGET然后parsing每个对象nodejs redis的JSON

我以nodejs应用程序的forms存储用户信息

SET user_<userid> {id:"asdad", .....} 

我有更新等组织的用户。 有时我需要为用户检索大量数据并将其发送给客户端(可以说有100个用户)

目前我使用MGET key1, key2, ....然后一旦我把它们拿回来,我parsingjson并返回结果。

对于我来说,将用户存储在哈希中会更好吗? 要检索多个用户,我可以使用HMGET和多个用户,所以我会使用100个HMGET,然后取回用户数据。

我看到的HMGET的巨大优势是,如果我只需要一些我的用户字段,我可以检索部分对象,而不是完整的对象。

对于我来说,将用户存储在哈希中会更好吗?

将用户存储在哈希中可以为您提供更好的灵活性,只需检索特定的字段,也无需将stringparsing为对象。 我之前也问过类似的问题 。

使用散列来存储你的用户肯定会更好,但是不要把它们的值分成不同的散列字段。 像使用自己的关键值存储一样使用哈希。

 HMSET users <userid> {"your":"json"} 

这比为每个用户使用顶级密钥更有效率,因为Redis不必为密钥保存元数据(如过期)。 你仍然支持HMGET / SET和其他一些。

详细信息可以在http://redis.io/topics/memory-optimizationfind

关于你的问题和我的问题,我找不到基准,所以你将不得不为自己的性能进行基准testing。 尽pipe如此,当你必须在两个redis实例上分割你的数据时,使用MULTI会让你陷入困境。 目前MULTI命令不能跨越多个实例。