Ответ 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.