wuc*_*ang 23 distributed nosql redis
问题1:我知道Redis将所有数据加载到内存中,从而提高了读/写速度.那么,这是否意味着如果我的内存大小是2G,最大数据集大小不应该大于2G?现在我的数据库有100G +数据,我服务器的内存不能大于32G,所以,Redis不再适合我吗?
问题2:Redis是否是分布式系统?当我使用谷歌搜索redis的CAP属性时,它说Redis不是分布式系统,因此,它与CAP无关 .但是从维基百科来看,它说它有一个主从架构,一个有很多奴隶的大师.多么令人困惑.
Did*_*zia 50
关于问题1,Redis是一个具有一定持久性功能的内存存储.您的所有数据集都应该适合内存.因此,单个实例受服务器的最大内存限制.现在,您还可以将数据分片到多个Redis实例,并在多个服务器上运行.如果你有预算,完全可以在一组Redis盒子上存储100GB - 1TB的数据.请注意,分片不是自动的:它必须由客户端或应用程序实现.它还对您可以对数据执行的操作施加了一些限制(例如,在服务器端无法计算由不同Redis实例托管的两个集合的交集).
关于问题2,单个Redis实例不是分布式系统.这是一个远程集中存储.现在,通过使用多个Redis实例,您可以构建分布式系统.因为它是一种自己动手的方法,所以您可以决定将其作为CP或AP系统.
单个实例可以将其活动复制到从属实例(因此最终与主实例一致).应用程序可以选择始终连接到主设备进行读写.在这种情况下,您可能会获得CP系统.它也可以在主设备上写入,并从所有实例(包括从设备)读取,因此您可以获得AP系统.我说"可能",因为它需要一些重要的工作来在Redis之上构建这样的系统.
您可以混合分片和主/从复制来构建所需的分布式系统.但是,Redis只提供了基本的砖块.特别是,它确实提供很少的处理弹性和HA(并在CAP定理中解决P).IMO,仅Redis哨兵不足以支持HA Redis配置,因为它仅涵盖角色管理.您需要使用资源管理器对其进行补充,并将大量逻辑放入客户端/应用程序中.
有一个名为Redis Cluster的正在进行的项目,其目的是提供一个简约的即用型分布式系统,但它仍然缺乏很多东西,并且还不能用于生产目的.
如果您需要现成的分布式商店,Redis可能不是一个好选择.Cassandra,Riak,MongoDB,Couchbase,Aerospike,MySQL Cluster,Oracle NoSQL等将为您提供更好的服务......但是,如果您想构建自己的专用系统,Redis是构建的优秀组件.
归档时间: |
|
查看次数: |
12291 次 |
最近记录: |