【发布时间】:2019-06-07 18:13:59
【问题描述】:
我的问题示例:HMSET myhash field1 value1 field2 value2 和 myhash 只有这两个字段。
主要问题是如何计算hash-max-ziplist-value,这样我的哈希值不会超过保持我的哈希值在压缩格式中以最小化内存使用。
非常感谢“Kevin Christopher Henry”的详细解释、帮助和时间。由于我的英语有限,我将在这里总结凯文的答案。如果我的理解有误,请纠正我。
(1) 为了满足hash-max-ziplist-value,我需要计算max(field1, value1, field2, value2)。假设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)MEMORY USAGE myhash
(b)field1、value1、field2、value2的总大小
(c) value1 和 value2 的总大小。
(d) 最大值(value1, value2)?
(e) 最大值(field1+value1, field2+value2)
- 我不知道如何计算我的哈希值以匹配
hash-max-ziplist-value。hash-max-ziplist-value是字节数吗?那是 utf-8 编码的字符串长度吗? redis 中是否有用于此计算的现有命令?
非常感谢您的帮助。
【问题讨论】:
标签: redis