Пример моего вопроса: HMSET myhash field1 value1 field2 value2
, а в myhash есть только эти два поля.
Основной вопрос заключается в том, как рассчитать hash-max-ziplist-value
, чтобы мой хэш не превышал значение, чтобы сохранить мой хэш в сжатом формате, чтобы минимизировать использование памяти.
Большое спасибо «Кевину Кристоферу Генри» за подробное объяснение, помощь и время. Из-за моего ограниченного английского я приведу здесь ответ Кевина. Пожалуйста, поправьте меня, если я правильно понял.
(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
1035 *.
В приведенном выше примере это одна запись или две записи, поскольку она имеет два поля?
- Что такое
hash-max-ziplist-value
? Это размер в байтах для
(а) MEMORY USAGE myhash
(б) размер суммы field1
, value1
, field2
, value2
(c) сумма суммы value1
и value2
.
(д) макс (value1
, value2
)?
(e) max (field1
+ value1
, field2
+ value2
)
- Я не знаю, как я могу вычислить мое значение хеша, чтобы соответствовать
hash-max-ziplist-value
. hash-max-ziplist-value
количество байтов в размере? Это длина строки в кодировке utf-8? Есть ли в Redis команда для этого расчета?
Большое спасибо за вашу помощь.