我需要存储大量的二进制文件(10-20 TB,每个文件范围从512 kb到100 MB)。
我需要知道Redis是否对我的系统有效。我的系统中需要以下属性:
我打算使用一组商品硬件来尽可能降低成本。请提出使用Redis构建这样的系统的利弊。我还对Redis的高内存需求感到担忧。
我不会将Redis用于此类任务。其他产品将更适合IMO。
Redis是一个内存数据存储。如果要存储10-20 TB的数据,则需要10-20 TB的RAM,这很昂贵。此外,内存分配器针对小型对象(而非大型对象)进行了优化。您可能必须将文件切成小块,这并不是很方便。
Redis不提供用于HA和故障转移的临时解决方案。提供了主/从复制(并且运行良好),但是不支持此故障转移的自动化。客户端必须足够聪明才能切换到正确的服务器。服务器端的某些内容(但未指定)必须以可靠的方式在主节点和从节点之间切换角色。换句话说,Redis仅提供自己动手做的HA /故障转移解决方案。
分片必须在客户端上实现(与memcached一样)。一些客户对此有支持,但并非全部。最快的客户端(hiredis)没有。无论如何,诸如重新平衡之类的事情必须在Redis之上实现。应该支持这种分片功能的Redis Cluster尚未准备就绪。
我建议使用其他解决方案。带有GridFS的 MongoDB 是可能的。带有HDFS的 Hadoop 是另一个。如果您喜欢最前沿的项目,则可能想尝试一下椭圆网络。