mid*_*dev 4 memory database redis
我的公司正在讨论在 Redis 而不是 mongodb 中构建我们后端的某些部分的可能性,但我们想计算我们将能够在 32G 的服务器中存储多少条记录。虽然我知道这完全取决于键和值的大小,但如果我们的元素都是这样的,有没有办法计算我们能够存储多少个项目:
key: Hexadecimal with 12 bytes.
value: String with 20 bytes.
Run Code Online (Sandbox Code Playgroud)
假设您有 32GB 的内存分配给 Redis 和其他内存可用于您的系统资源,您可以计算您可以存储的条目数。但是,请记住,这是非常普遍的,因为总会有某种开销。无论如何,如果您从数学的角度来看纯粹的条目数量,您可以使用 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
Run Code Online (Sandbox Code Playgroud)
正如我之前所说,假设没有任何类型的开销是非常糟糕的。请参阅下面的 Redis 常见问题解答。如果不了解环境的更多细节,就不可能提供更准确的数字。
举几个例子(都是使用 64 位实例获得的):一个空实例使用 ~ 1MB 的内存。100 万个小键 -> 字符串值对使用 ~ 100MB 内存。100 万个键 -> 哈希值,表示具有 5 个字段的对象,使用 ~ 200 MB 内存。使用 redis-benchmark 实用程序生成随机数据集并使用 INFO 内存命令检查使用的空间来测试您的用例是微不足道的。64 位系统将使用比 32 位系统多得多的内存来存储相同的键,特别是如果键和值很小,这是因为指针在 64 位系统中占用 8 个字节。但当然好处是你可以在 64 位系统中拥有大量内存,因此为了运行大型 Redis 服务器,或多或少需要 64 位系统。另一种方法是分片。
| 归档时间: |
|
| 查看次数: |
6914 次 |
| 最近记录: |