Какой диапазон значений идеального размера для Redis? 100 КБ слишком большой? - PullRequest
1 голос
/ 04 апреля 2019

Существует ли верхний предел предлагаемого размера значения, хранимого для определенного ключа в Redis?

Не слишком ли велико значение 100 КБ?

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Есть две вещи, которые вы должны учитывать при принятии решения, является ли что-то «слишком большим».

Есть ли в Redis поддержка размера объекта ключ / значение, которое вы хотите сохранить?

Ответ на этот вопрос довольно хорошо задокументирован на сайте Redis (https://redis.io/topics/data-types),, поэтому я не буду здесь вдаваться в подробности.

Дляданный размер ключа / значения, о каких последствиях мне нужно знать?

Это гораздо более детальный ответ, поскольку он сильно зависит от того, как вы используете Redis и какое поведение приемлемо дляваше приложение, а какие нет.

Например, больший размер ключа / значения может привести к фрагментации пространства памяти на вашем сервере. Если вы все равно не используете всю память на своем сервере Redis, тоэто может не иметь большого значения для вас. Однако, если вам нужно выжать всю память из вашего сервера Redis, то вы теперь снижаете эффективность распределения памяти ивы теряете доступ к некоторой памяти, которая у вас была бы в противном случае.

В качестве другого примера, когда вы читаете эти большие записи ключа / значения из Redis, это означает, что вам нужно перенести больше данных по сети с сервераклиенту.Некоторые последствия этого:

  1. Для передачи данных требуется больше времени, поэтому вашему клиенту может потребоваться настроить более высокое значение тайм-аута, чтобы учесть это дополнительное время передачи.

  2. Запросы, поступающие на сервер по тому же TCP-соединению, могут застрять за большой передачей и привести к превышению времени ожидания других запросов. См. Здесь для примера сценария.

  3. Ваши сетевые буферы, используемые для передачи этих данных, могут повлиять на доступную память на клиенте или сервере, что может усугубить проблемы с доступной памятьюуже было описано в отношении фрагментации.

  4. Если к этим большим элементам ключа / значения часто обращаются, это увеличивает воздействия, описанные выше, поскольку вы многократно переносите эти данные снова и снова.

Итак, ответ не в четком «да» или «нет», а в некоторых вещах, которые вы должны рассмотреть и, возможно, проверить на ожидаемую нагрузку.В общем, я советую нашим клиентам стараться оставаться как можно меньше, и я часто говорил, что стараюсь оставаться ниже 100 КБ, но я также видел, что многие клиенты используют Redis с большими значениями (в диапазоне МБ).Иногда эти большие значения не имеют большого значения.В других случаях это может быть проблемой только через несколько месяцев или лет, когда их приложение изменится в нагрузке или поведении.

1 голос
/ 04 апреля 2019

Существует ли верхний предел предлагаемого размера значения, хранящегося для определенного ключа в Redis?

Согласно официальным документам , максимальный размер ключа (String) в redis составляет 512 МБ.

100КБ слишком большой?

Это зависит от применения и использования, для приложений общего назначения должно быть хорошо.

...