memory - 对 redis 集进行尺寸标注

标签 memory redis dimension

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

这家商店将专门使用 Sorted Sets build .每组都有一个键,该键是 1 到 10^10 之间的整数。我们目前拥有大约 800 万个 key ,但我们希望“快速”达到 3000 万个。

每个集合的元素数量不定,但平均为 17 个元素,最多 135 个,最少 0 个。(如果我们需要提供其他数字,请告诉我,例如 st.dev.)。

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

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

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

我们的目标是使用一个(但很大)Redis master store(可能还有一些 slaves store)。我们应该为我们的 redis 实例分配什么 RAM?

最佳答案

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

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

我刚刚在我的系统上尝试过,我每 100000 个 key 获得 30 MB(根据您的规范),这导致 30M key 需要 9 GB 的内存。您需要留出一些余量,并在保存时包含一些用于 COW 内存的空间。

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

关于memory - 对 redis 集进行尺寸标注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11755709/

相关文章:

c - 内存分配的差异

android - 上下文的静态内存泄漏

c - 打印功能未正确读取释放的值

Redis 原子 GET 和 EXPIRE

python - 扩展维度 xarray

python - Opencv Python 用一个常量调整大小

C# 列表和内存

node.js - 退出命令在node-redis中给出错误

redis - 在 Redis 中使用多个键和日期计算/查询事件

function - SML 中具有用户数据类型的部分函数