1

我们想将 redis 用于我们的数据存储之一。我们很难“猜测”redis 存储的大小,我们希望有人能提供正确的帮助。

该商店将专门使用Sorted Sets构建。每个集合都有一个键,它是 1 到 10^10 之间的整数。我们目前有大约 800 万个密钥,但我们希望“快速”达到 3000 万个。

每个集合将有可变数量的元素,但平均值为 17 个元素,最大值为 135,最小值为 0。(如果我们需要提供其他数字,请告诉我,例如 st.dev。)。

排序集中的元素将是字符串。现在我们希望它们成为可能的最短字符串(5 或 6 个字符?),但仍要避免冲突。分数将是时间戳。

我们目前有大约 500 次写入/秒,但预计会增长 10 倍,我们目前有 3000 次读取/秒,预计也会增长 10 倍。

我们还将使用“转储”策略而不是 AOF。

我们的目标是使用单个(但很大)Redis 主存储(可能还有一些从属存储)。我们应该为我们的 redis 实例分配什么 RAM?

4

1 回答 1

3

如果您使用 Redis 2.6,则可以从应用于 zset 的 ziplist 内存优化中受益,因为您的大多数 zset 都有少量项目。

要计算您需要的内存,您可以简单地用与您的要求相对应的少量键填充一个实例并进行推断。对于这个用例,内存消耗将随着键的数量线性增长。

我刚刚在我的系统上尝试过,每 100000 个密钥获得 30 MB(按照您的规范),这导致 30M 密钥需要 9 GB 的内存。您需要留出一些余量,并为节省时间花费的 COW 内存留出一些空间。

如果您小心的话,一个 12 GB 的服务器可能会工作。一个 16 GB 的服务器就可以了。

于 2012-08-01T13:02:38.300 回答