Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nosql Redis,分布式还是非分布式?_Nosql_Redis_Distributed - Fatal编程技术网

Nosql Redis,分布式还是非分布式?

Nosql Redis,分布式还是非分布式?,nosql,redis,distributed,Nosql,Redis,Distributed,问题1: 我知道Redis将所有数据加载到内存中,从而提高了读/写速度。那么,这是否意味着如果我的内存大小是2G,则最大数据集大小不应大于2G?现在我的数据库有100G+的数据,我服务器的内存不能超过32G,所以Redis不再适合我了 问题2: Redis是不是分布式系统?当我使用谷歌搜索redis的CAP属性时,它说redis不是一个分布式系统,所以它与 . 但从一开始,它说它有一个主从式结构,一个主从多个从。 多么令人困惑。关于问题1,Redis是一个内存存储,具有一些持久性功能。所有数据集

问题1: 我知道Redis将所有数据加载到内存中,从而提高了读/写速度。那么,这是否意味着如果我的内存大小是2G,则最大数据集大小不应大于2G?现在我的数据库有100G+的数据,我服务器的内存不能超过32G,所以Redis不再适合我了

问题2: Redis是不是分布式系统?当我使用谷歌搜索redis的CAP属性时,它说redis不是一个分布式系统,所以它与 . 但从一开始,它说它有一个主从式结构,一个主从多个从。
多么令人困惑。

关于问题1,Redis是一个内存存储,具有一些持久性功能。所有数据集都应该放在内存中。因此,单个实例受到服务器最大内存的限制。现在,您还可以将数据分片到多台服务器上运行的多个Redis实例。如果你有足够的预算,完全可以在一组Redis盒上存储100GB-1TB的数据。请注意分片不是自动的:它必须由客户端或应用程序实现。它还对您可以对数据执行的操作施加了一些限制(例如,在服务器端无法计算由不同Redis实例承载的两个集合的交点)

关于问题2,单个Redis实例不是分布式系统。它是一个远程集中存储。现在,通过使用几个Redis实例,您可以构建一个分布式系统。因为这是一种自己动手的方法,所以您可以决定将其设置为CP或AP系统

单个实例可以将其活动复制到从属实例(因此最终与主实例一致)。应用程序可以选择始终连接到主机进行读写。在这种情况下,您可能会得到一个CP系统。它还可以在主设备上进行写操作,并从所有实例(包括从设备)中进行读取,因此您可能会得到一个AP系统。我说“可能”,因为在Redis之上构建这样的系统需要做一些重要的工作

您可以混合使用分片和主/从复制来构建所需的分布式系统。然而,Redis只提供基本的砖块来实现这一点。特别是,它对弹性和HA(以及CAP定理中的P)的处理提供了很少的帮助。IMO本身不足以支持HA Redis配置,因为它只涉及角色管理。您需要用一个资源管理器来补充它,并在客户机/应用程序中加入大量逻辑

有一个正在进行的名为的项目,其目的是提供一个最低限度的即用分布式系统,但它仍然缺乏很多东西,并且还不能用于生产目的


如果您需要现成的分布式商店,Redis可能不是一个好的选择。Cassandra、Riak、MongoDB、Couchbase、Aerospike、MySQL集群、OracleNoSQL等将为您提供更好的服务。。。但是,如果您想构建自己的专用系统,Redis是一个很好的构建组件。

这里有一个有用的链接,Redis群集教程

使用memcache查看Facebook的解决方案也可能会让您受益匪浅:


好吧,你的信息对我来说非常重要,也非常重要。从你的描述来看,redis确实不适合我,因为我们对构建一个专门的系统感兴趣,只是一个现成的NoSQL数据库,存储100G+数据。我现在更关注mongoDB和couchDB。而且,我认为Redis是一个很好的缓存而不是存储整个数据的解决方案。因此,有可能存储数据碎片以供频繁使用和访问。因为答案有点陈旧,所以最好提一下,现在Redis支持跨集群的自动分片解决方案:为什么只从主服务器读取CP?如果我们忽视奴隶,它甚至不再被分发。