2

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

key: Hexadecimal with 12 bytes.
value: String with 20 bytes.

1 ответ1

3

Предполагая, что у вас есть 32 ГБ памяти, выделенной для Redis, и другой памяти, доступной вашим системным ресурсам, вы можете рассчитать количество записей, которые вы можете сохранить. Однако имейте в виду, что это чрезвычайно обобщенно, так как всегда есть какие-то накладные расходы. В любом случае, если вы посмотрите на чистое количество записей с математической точки зрения, вы можете хранить около миллиарда записей с 32 ГБ ОЗУ.

1 GB = 1024MB
1 MB = 1024KB
1 KB = 1024B

1GB = 1,073,741,824B
32GB = 34,359,738,368B

size = 12B + 20B = 32B

number_of_entries = (available_size / size_of_entry)
                  = (34,359,738,368B / 32B)
                  = 1,073,741,824

Как я уже говорил, очень плохо просто предполагать, что нет никаких накладных расходов. Смотрите Redis's FAQ ниже. Не зная больше деталей вашей среды, было бы невозможно дать более точные цифры.

Какой объем памяти у Redis?

Чтобы дать вам несколько примеров (все получены с использованием 64-битных экземпляров): Пустой экземпляр использует ~ 1 МБ памяти. 1 миллион маленьких ключей -> String Value используют ~ 100 МБ памяти. 1 миллион ключей -> значение хэша, представляющее объект с 5 полями, использует ~ 200 МБ памяти. Тестировать ваш вариант использования тривиально, используя утилиту redis-benchmark для генерации случайных наборов данных и проверки с помощью команды памяти INFO используемого пространства. 64-битные системы будут использовать значительно больше памяти, чем 32-битные, для хранения тех же ключей, особенно если ключи и значения небольшие, это связано с тем, что указатели занимают 8 байтов в 64-битных системах. Но, конечно, преимущество в том, что в 64-битных системах может быть много памяти, поэтому для запуска больших серверов Redis более или менее требуется 64-битная система. Альтернатива шардинга.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .