memory - Redis 最佳哈希集条目大小

标签 memory optimization hash redis

我对 Redis 哈希集的最佳条目大小设置有一些疑问。

  1. 在本例中 memory-optimization他们使用 100 个哈希条目 每个 key 但使用 hash-max-zipmap-entries 256 ?为什么不 hash-max-zipmap-entries 100 还是 128?

  2. 在 redis 网站(上面的链接)上,他们使用的最大哈希条目大小为 100,但在这篇文章中 instagram ,他们提到了 1000 个条目。所以 这是否意味着最佳设置是以下产品的函数 hash-max-zipmap-entries & hash-max-zipmap-value ?(即在这种情况下 Instagram 的哈希值比内存优化示例更小?)

非常感谢您的评论/说明。

最佳答案

关键是,from here :

manipulating the compact versions of these [ziplist] structures can become slow as they grow longer

[as ziplists grow longer] fetching/updating individual fields of a HASH, Redis will have to decode many individual entries, and CPU caches won’t be as effective

所以你的问题

  1. 此页面仅显示一个示例,我怀疑作者是否对确切值进行了充分考虑。在现实生活中,如果您想利用 ziplists,并且您知道每个哈希的条目数小于 100,那么将其设置为 100、128 或 256 将没有任何区别。 hash-max-zipmap-entries 只是您告诉 Redis 将编码从 ziplist 更改为哈希的 LIMIT。

  2. 您的“hash-max-zipmap-entries 和 hash-max-zipmap-value 的乘积”想法可能有些道理,但我只是在猜测。更重要的是,首先你必须根据你想做的事情来定义“最优”。如果你想在一个大的 ziplist 中做很多 HSET/HGET,它会比你使用散列慢。但是,如果您从不获取/更新单个字段,只对某个键执行 HMSET/HGETALL,那么大型 ziplist 不会减慢您的速度。根据他们的特定数据、用例和 Redis 函数调用频率,Instagram 1000 是他们的最佳数字。

关于memory - Redis 最佳哈希集条目大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24617615/

相关文章:

perl - 为什么这个函数会占用大量内存?

c - 黄金分割搜索

C++:对微不足道的包装方法进行优化

mysql - 延迟评估 MySQL View

arrays - 获取数组中的散列值(来自多个散列)并将它们相加

javascript - 如何处理 jqPlot 内存泄漏?

r - 预测 R 中的内存使用情况

c - C中给char ***分配内存

python - 向后差异编码如何用于测试集?

arrays - 根据值对 HoHoA 进行排序和比较