如何计算每 32GB 内存 Redis 中可能的记录数?

如何计算每 32GB 内存 Redis 中可能的记录数?

在我的公司,我们正在讨论使用 Redis 而不是 mongodb 构建部分后端的可能性,但我们想计算在 32G 的服务器中能够存储多少条记录。虽然我知道这完全取决于键和值的大小,但如果我们的元素都像这样,有没有办法计算我们能够存储多少个项目:

key: Hexadecimal with 12 bytes.
value: String with 20 bytes.

答案1

假设您为 Redis 分配了 32GB 内存,并且系统资源还提供了其他内存,那么您可以计算出可以存储的条目数。但是,请记住,这是非常笼统的,因为总会存在某种开销。无论如何,如果从数学角度来看条目的纯数量,那么使用 32GB RAM 可以存储大约 10 亿个条目。

1 GB = 1024MB
1 MB = 1024KB
1 KB = 1024B

1GB = 1,073,741,824B
32GB = 34,359,738,368B

size = 12B + 20B = 32B

number_of_entries = (available_size / size_of_entry)
                  = (34,359,738,368B / 32B)
                  = 1,073,741,824

正如我之前所说,仅仅假设没有任何开销是非常糟糕的。请参阅下面的 Redis 常见问题解答。如果不了解您的环境的更多细节,就不可能给出更准确的数字。

Redis 内存占用是多少?

举几个例子(均使用 64 位实例获得):一个空实例使用 ~ 1MB 内存。100 万个小的 Keys -> String Value 对使用 ~ 100MB 内存。100 万个 Keys -> Hash 值(表示具有 5 个字段的对象)使用 ~ 200 MB 内存。使用 redis-benchmark 实用程序生成随机数据集并使用 INFO memory 命令检查使用的空间,测试您的用例非常简单。64 位系统将比 32 位系统使用多得多的内存来存储相同的键,特别是当键和值都很小时,这是因为指针在 64 位系统中占用 8 个字节。但当然优势在于您可以在 64 位系统中拥有大量内存,因此为了运行大型 Redis 服务器,或多或少需要 64 位系统。另一种选择是分片。

相关内容