我们想将redis用于我们的一个数据存储。我们很难“猜测”redis商店的大小,我们希望有人可以提供正确的帮助。
此商店将使用Sorted Sets专门构建。每个集合都有一个密钥,该密钥是1到10 ^ 10之间的整数。我们目前有大约8M密钥,但我们预计会很快达到30M。
每个集合将具有可变数量的元素,但平均值为17个元素,最大值为135,最小值为0.(如果需要提供其他数字,请告诉我们,例如st.dev。)。
有序集合中的元素将是字符串。现在我们希望它们是最短的字符串(5或6个字符?),但仍然可以避免碰撞。分数将是时间戳。
我们目前有大约500次写入/秒,但预计会增长10次,而且我们目前有3000次读取/秒,并且预计也会增长10次。
我们还将使用“转储”策略而不是AOF。
我们的目标是使用一个(但很大的)Redis主商店(也许还有一些奴隶商店)。我们应该为我们的redis实例分配什么RAM?
答案 0 :(得分:3)
如果您使用Redis 2.6,您可以从应用于zset的ziplist内存优化中受益,因为您的大多数zset都有少量项目。
要计算所需的内存,您只需使用符合您要求的少量键填充实例并进行外推即可。对于此用例,内存消耗将随密钥数量线性增长。
我刚刚在我的系统上尝试过,每100000个密钥可以获得30 MB(遵循您的规格),这导致30M密钥需要9 GB的内存。您需要占用一些余量,并在节省时间内为COW内存包含一些空间。
如果你小心的话,12 GB服务器可能会工作。 一台16 GB的服务器就可以了。