Подтвердить что ты не робот

Должен ли я использовать redis для хранения большого количества двоичных файлов?

Мне нужно хранить огромное количество двоичных файлов (10-20 ТБ, каждый файл от 512 кб до 100 МБ).

Мне нужно знать, будет ли Redis эффективным для моей системы. Мне нужны следующие свойства в моей системе:

  • Высокая доступность
  • Failover
  • Sharding

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

4b9b3361

Ответ 1

Я бы не использовал Redis для такой задачи. Другие продукты будут лучше соответствовать ИМО.

Redis - это хранилище данных в памяти. Если вы хотите хранить 10-20 Тбайт данных, вам понадобится 10-20 ТБ ОЗУ, что дорого. Кроме того, распределитель памяти оптимизирован для небольших объектов, а не больших. Вам, вероятно, придется вырезать ваши файлы на разных небольших кусках, это было бы не очень удобно.

Redis не предоставляет специального решения для HA и отказоустойчивости. Репликация master/slave предоставляется (и работает достаточно хорошо), но без поддержки автоматизации этого отказа. Клиенты должны быть достаточно умны, чтобы переключиться на правильный сервер. Что-то на стороне сервера (но это неуказано) должно надежно переключать роли между узлами master и slaves. Другими словами, Redis предоставляет только собственное решение HA/failover.

Sharding должен быть реализован на стороне клиента (например, с memcached). Некоторые клиенты поддерживают его, но не все из них. Самый быстрый клиент (hiredis) этого не делает. Во всяком случае, такие вещи, как перебалансировка, должны быть реализованы поверх Redis. Redis Cluster, который должен поддерживать такие возможности осколки, еще не готов.

Я бы предложил использовать некоторые другие решения. MongoDB с GridFS может быть возможностью. Hadoop с HDFS - еще один. Если вам нравятся ультрасовременные проекты, вы можете попробовать Elliptics Network.