我应该使用redis来存储大量的二进制文件吗?

时间:2012-01-09 09:41:17

标签: nosql redis blob

我需要存储大量的二进制文件(10 - 20 TB,每个文件的范围从512 kb到100 MB)。

我需要知道Redis是否对我的系统有效。 我的系统中需要以下属性:

  • 高可用性
  • 故障转移
  • 拆分

我打算使用商品硬件集群尽可能地降低成本。请建议使用Redis构建此类系统的利弊。我也担心Redis的高ram要求。

1 个答案:

答案 0 :(得分:25)

我不会将Redis用于此类任务。其他产品将更适合IMO。

Redis是一个内存数据存储。如果要存储10-20 TB的数据,则需要10-20 TB的RAM,这很昂贵。此外,内存分配器针对小对象而非大对象进行了优化。你可能不得不用各种小块剪切文件,这不太方便。

Redis不提供HA和故障转移的临时解决方案。提供主/从复制(并且运行良好),但不支持此故障转移的自动化。客户端必须足够智能才能切换到正确的服务器。服务器端的某些东西(但未指定)必须以可靠的方式在主节点和从节点之间切换角色。换句话说,Redis只提供自己动手的HA /故障转移解决方案。

必须在客户端实现Sharding(与memcached一样)。一些客户支持它,但不是全部。最快的客户(hiredis)没有。无论如何,重新平衡之类的事情必须在Redis之上实现。应该支持这种分片功能的Redis Cluster还没有准备好。

我建议使用其他一些解决方案。可能有GridFS的MongoDB。 Hadoop与HDFS是另一个。如果您喜欢尖端项目,可能需要尝试Elliptics Network