gpt4 book ai didi

redis - 如何正确计算 hash-max-ziplist-value?

转载 作者:可可西里 更新时间:2023-11-01 11:14:28 25 4
gpt4 key购买 nike

我的问题示例:HMSET myhash field1 value1 field2 value2 而myhash只有这两个字段。

主要问题是如何计算hash-max-ziplist-value,以便我的哈希值不会超过以压缩格式维护我的哈希值,从而最大限度地减少内存使用量。

非常感谢“Kevin Christopher Henry”的详细解释、帮助和时间。由于我的英语有限,我将在这里总结凯文的回答。如果我的理解有误,请指正。

(1) 为了满足hash-max-ziplist-value,我需要计算max(field1, value1, 字段 2value2)。假设 value1 的大小最大。然后我只需要确保 value1 的大小不超过 hash-max-ziplist-value

(2) 要计算value1,我只需要计算大小的字节数。因为 hash-max-ziplist-value 是字符串值在任何压缩之前的字节数。

(3) 计算value1的字节数,有很多种方法,其中一种是: 首先,如果value1是UTF8编码不是。其次,使用客户端语言检查它的长度。因为UTF8编码字符串的长度就是Size中的字节数。 (例如:utf8.encode(value1).length)。

原帖

例如,HMSET myhash field1 value1 field2 value2

  • 首先,我想澄清一下 hash-max-ziplist-entries 的真正含义。

上面的例子是一个条目还是两个条目,因为它有两个字段?

  • 什么是hash-max-ziplist-value?是
  • 的字节大小吗?

(a) 内存使用 myhash

(b) field1, value1, field2, value2 的总和大小

(c) value1value2 的总大小。

(d) 最大值(value1, value2)?

(e) max(field1+value1, field2+value2)

  • 我不知道如何计算哈希值以匹配 hash-max-ziplist-valuehash-max-ziplist-value 大小是字节数吗?那是utf-8编码的字符串长度吗? Redis 中是否有用于此计算的现有命令?

非常感谢您的帮助。

最佳答案

这些值在 redis.conf 中有简要描述。文件,以及 memory optimization documentation .

# Hashes are encoded using a memory efficient data structure when they have a
# small number of entries, and the biggest entry does not exceed a given
# threshold. These thresholds can be configured using the following directives.
hash-max-ziplist-entries 512
hash-max-ziplist-value 64

以这些默认值为例,如果哈希具有 512 个或更少的条目,并且每个条目为 64 字节或更小,则哈希将使用 ziplist 进行编码。

虽然文档没有准确说明哈希条目的大小是如何计算的,但请查看 the source code表示字段名称和值的大小都必须小于或等于阈值。您应该能够通过计算二进制字符串的长度(以字节为单位)来确定大小。

回答您的一些具体问题:

Is the above example one entry or two entries because it has two fields?

两个。

What is hash-max-ziplist-value?

使用您的术语,这将是 max(field1, value1, field2, value2)

Is that utf-8 encoded string calculation?

Redis 使用二进制字符串。由您(或您的客户)决定使用何种编码。

Is there any easy way to calculate myhash value in bytes for hash-max-ziplist-value? Is there an existing command in redis for this calculation?

据我所知,该值的二进制字符串表示的长度应该大致正确。

关于redis - 如何正确计算 hash-max-ziplist-value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56459786/

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