多重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命令不能跨越多个实例。