<分区>
我需要存储大量二进制文件(10 - 20 TB,每个文件从 512 kb 到 100 MB 不等)。
我需要知道 Redis 是否对我的系统有效。 我的系统中需要以下属性:
- 高可用性
- 故障转移
- 分片
我打算使用一组商用硬件来尽可能降低成本。请建议使用 Redis 构建此类系统的优缺点。我也担心 Redis 的高 ram 要求。
<分区>
我需要存储大量二进制文件(10 - 20 TB,每个文件从 512 kb 到 100 MB 不等)。
我需要知道 Redis 是否对我的系统有效。 我的系统中需要以下属性:
我打算使用一组商用硬件来尽可能降低成本。请建议使用 Redis 构建此类系统的优缺点。我也担心 Redis 的高 ram 要求。
最佳答案
我不会使用 Redis 来完成这样的任务。其他产品将更适合 IMO。
Redis 是一种内存数据存储。如果要存储 10-20 TB 的数据,则需要 10-20 TB 的 RAM,这很昂贵。此外,内存分配器针对小对象而非大对象进行了优化。您可能不得不将文件切成各种小块,这不是很方便。
Redis 不提供 HA 和故障转移的临时解决方案。提供了主/从复制(并且工作得很好),但不支持此故障转移的自动化。客户端必须足够聪明才能切换到正确的服务器。服务器端的某些东西(但未指定)必须以可靠的方式在主节点和从节点之间切换角色。换句话说,Redis 仅提供自己动手的 HA/故障转移解决方案。
分片必须在客户端实现(就像使用 memcached)。一些客户支持它,但不是全部。最快的客户端(hiredis)没有。无论如何,像重新平衡这样的事情必须在 Redis 之上实现。应该支持这种分片功能的 Redis Cluster 还没有准备好。
我建议使用其他一些解决方案。带有 GridFS 的 MongoDB可能是一种可能性。 Hadoop 与 HDFS是另一个。如果你喜欢尖端项目,你可能想要给 Elliptics Network一试。
关于nosql - 存储大量二进制文件应该用redis吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8786395/
相关文章:
python - arangoDB 的 pyarango 驱动程序 : validation
ruby-on-rails - 在 Rails 3 中将 session 从 cookie_store 迁移到 Redis
react-native - 在 react-native 上将 base64 转换为 blob 时获取错误
http - azure Blob : "The condition specified using HTTP conditional header(s) is not met"
redis - 为什么我的 redis 命令键不会阻止我的其他操作
mongodb - 批量读取 Mongo DB 的最佳方式 - 有这样的东西吗?
c++ - 错误 LNK2019 : unresolved external symbo UnQLite