Redis:如何有效地存储包含5个字段的哈希集

时间:2015-09-11 17:18:30

标签: node.js memory redis memory-efficient

我正在使用redis并希望将超过1百万个密钥存储为具有5个字段的哈希集。

起初它看起来像那样:

key : {
a : 1,
b : 2,
c : 3,
d : 4,
e : 5
}

1M键使用了大约130MB的内存。然后我发现了Instagram开发人员的帖子:http://instagram-engineering.tumblr.com/post/12202313862/storing-hundreds-of-millions-of-simple-key-value

所以我调整了我的方法:

key1 : {
1a : 1,
1b : 2,
1c : 3,
1d : 4,
1e : 5,
2a : 1,
...
}

key2 : {
1a : 1,
1b : 2,
1c : 3,
1d : 4,
1e : 5,
2a : 1,
...
}
...

这仅用于500k条目就超过了200MB。那么在我的数据中有更好的结构吗?

// EDIT

好的,我有一个名为' user'我想在redis中保存5个字段('姓名','电子邮件','年龄','性别','活性&#39)。所以一开始我使用hmset命令通过nodejs' redis' -package在redis中创建一个条目。

userId : {
name : Emil Example,
email : email@stackoverflow.com,
age : 20,
gender : m,
active : true
}

因此,我创建了1M个虚拟数据条目,并通过“信息”检查了内存使用情况。命令。约~130MB。然后我阅读了Instagram博客及其对桶的使用。所以我用我的数据(userID:' 12345')实现了它:

12 : {
345name : Emil Example,
345email : email@stackoverflow.com,
345age : 20,
345gender : m,
345active : true
}

当然每个以' 12'开头的用户ID会掉进这个桶里。在尝试使用500k虚拟条目运行后,我的使用量超过了500MB。所以我只是问自己,如果我做错了或者我的情况,还有其他一些优化选项吗?

P.S:Ofc我调整了' hash-zipmap-max-entries'配置文件中的设置并使用它启动redis。

0 个答案:

没有答案