gpt4 book ai didi

redis - 更改 hash-max-ziplist-entries 后,redis 哈希是否保留在 ziplist 中?

转载 作者:IT王子 更新时间:2023-10-29 06:01:17 25 4
gpt4 key购买 nike

我正在运行一个 redis 实例,我在其中存储了很多具有整数字段和值的哈希值。具体来说,有很多形式的散列

{1: <int>, 2: <int>, ..., ~10000: <int>}

我最初使用 hash-max-ziplist-entries 的默认值运行 redis:

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

redis 使用了大约 3.2 GB 的内存。

然后我将这些值更改为

hash-max-ziplist-entries 10240
hash-max-ziplist-value 10000

然后重启redis。我的内存使用率下降到大约 480 MB,但 Redis 使用了 100% 的 CPU。我将值恢复为 512 和 64,并重新启动了 redis,但它仍然只使用了 480 MB 的内存。

我假设内存使用率下降是因为我的很多哈希值都存储为 ziplists。我猜想在更改值并重新启动 redis 后,它们会自动转换回哈希表,但事实并非如此。

那么,这些哈希值是否仍存储为 ziplist?

最佳答案

它们仍然是优化的“ziplist”格式。

如果散列最终有超过 hash-max-ziplist-entries 个条目,或者如果值更小,Redis 将以优化的方式存储散列(通过“hset”或类似方式)超过 hash-max-ziplist-values 字节。如果这些限制被打破,Redis 将“正常”存储项目,即。未优化。

文档中的相关部分 ( http://redis.io/topics/memory-optimization ):

如果特殊编码的值会溢出配置的最大大小,Redis 会自动将其转换为正常编码。

一旦值以优化方式写入,它们就不会“解压缩”,即使您稍后降低最大大小设置也是如此。这些设置将应用于 Redis 存储的新 key 。

关于redis - 更改 hash-max-ziplist-entries 后,redis 哈希是否保留在 ziplist 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25715165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com