当前位置: 首页 > 面试题库 >

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

江佐
2023-03-14
问题内容

我需要存储大量的二进制文件(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
是另一个。如果您喜欢最前沿的项目,则可能想尝试一下椭圆网络。



 类似资料:
  • 我了解到,每次部署firebase云功能时,firebase都会自动将一些数据保存在firebase存储中。我很想知道哪些数据被保存,如果删除是安全的,或者任何关于删除什么的建议。 我有一个小项目,200MB的云存储用于用户数据和10个云功能来完成各种任务。10月初,我做了很少的firebase部署操作,现在我看到了900MB的us.artifacts数据。请参阅下面的firebase和googl

  • 问题内容: 我读了很多文章,并且发现了很多不同的答案。 运行MYSQL 5.7,我有一个不需要存储的大型JSON对象,只需要存储即可。使用似乎效率低下- 我不需要验证它。在这种情况下最好的解决方案是什么?还是显而易见的选择,但是这两个之中最好的选择是什么? 二进制文件需要转换回文本(您最好怎么做?PHP还是在SQL查询期间?)仅需要返回文本。我非常感谢您的澄清… 问题答案: 什么是手动有关JSON

  • 问题内容: 我正在使用ExpressJS,Mongodb(Mogoose)构建应用程序。应用程序包含访问用户之前必须对其进行身份验证的路由。 目前,我已经编写了一个快速的中间件来做同样的事情。在这里,借助JWT令牌,我正在进行mongodb查询以检查用户是否已通过身份验证。但是感觉这可能会在我的数据库上增加不必要的请求负载。 我应该针对此特定任务集成redis吗? 会改善API性能吗?还是应该继续

  • 用户应该能够更改包含数组的实体的内容,该数组映射到数据库中的列。请注意,我不能使用LOB功能,因为赛贝斯不支持它。 当我试图持久化或合并实体时,通常只存储包含数据的实体,而存储其他类型的文件,如或使数据库抛出: Hibernate会在异常发生之前立即记录一个正常的更新,我肯定不会执行任何存储过程,所以我不确定错误指的是哪个存储过程。我在原生查询中也尝试过同样的方法,但最终还是出现了同样的错误。 我

  • 假设我执行了MOV R1,#9这样的指令。这会将二进制数字9存储在ARM组件的内存中吗?ARM汇编代码会看到存储在内存中R1位置的数字00001001吗?如果不是什么,它将如何存储十进制数字9的二进制?