2012-06-05 21 views

回答

25

使用Redis代替传统的RDBMS有很多潜在的好处和潜在的缺点。他们确实是非常不同的野兽。

只对潜在的缺点聚焦:

  • 的Redis是一个内存中储存:您的所有数据必须适合在内存中。 RDBMS通常将数据存储在磁盘上,并将部分数据缓存在内存中。使用RDBMS,您可以管理比内存更多的数据。有了Redis,你不能。

  • Redis是一个数据结构服务器。没有查询语言(只有命令),也不支持关系代数。您不能提交即席查询(就像您可以在RDBMS上使用SQL一样)。所有数据访问都应由开发人员预期,并且必须设计正确的数据访问路径。失去了很多灵活性。

  • Redis为持久性提供了2个选项:常规快照和仅附加文件。它们都不如提供重做/撤销记录,块校验,时间点恢复,闪回能力等的真实交易服务器安全......

  • Redis只提供基本安全性(根据访问权限)在实例级别。 RDBMS都提供细粒度的每对象访问控制列表(或角色管理)。

  • 独特的Redis实例不可扩展。它只能在单线程模式下在一个CPU内核上运行。为了获得可伸缩性,必须部署和启动多个Redis实例。分发和分片在客户端完成(即开发者必须照顾他们)。如果将它们与唯一的Redis实例进行比较,则大多数RDBMS提供更高的可伸缩性(通常在连接级别提供并行性)。他们是多处理(Oracle,PostgreSQL,...)或多线程(MySQL,Microsoft SQL Server,...),受益于多核机器。

在这里,我只是描述的主要缺点,但请记住,也有很多的好处,使用Redis的(非常快,很好的并发支持,低延迟,协议流水线,好轻松实现乐观并发模式,良好的可用性/复杂性比例,卓越的支持从萨尔瓦多和彼得,务实的没有废话的方法,...)

对于您的具体问题(图),我建议看看neo4J或OrientDB哪些专门设计用于存储面向图的数据。