Memcached,memcache( 五 )


最新版本的Redis已经支持了分布式存储功能 。Redis Cluster是一个实现了分布式且允许单点故障的Redis高级版本,它没有中心节点,具有线性可伸缩的功能 。下图给出Redis Cluster的分布式存储架构,其中节点与节点之间通过二进制协议进行通信,节点与客户端之间通过ascii协议进行通信 。
在数据的放置策略上,Redis Cluster将整个key的数值域分成4096个哈希槽,每个节点上可以存储一个或多个哈希槽,也就是说当前Redis Cluster支持的最大节点数就是4096 。Redis Cluster使用的分布式算法也很简单:crc16( key ) % HASH_SLOTS_NUMBER 。
为了保证单点故障下的数据可用性,Redis Cluster引入了Master节点和Slave节点 。在Redis Cluster中,每个Master节点都会有对应的两个用于冗余的Slave节点 。这样在整个集群中,任意两个节点的宕机都不会导致数据的不可用 。当Master节点退出后,集群会自动选择一个Slave节点成为新的Master节点 。
memcache、redis、mongodb优缺点是什么啊,怎么选?

Memcached,memcache


虽然都是nosql范畴,但是memcache、redis主要设计目的是做缓存使用mongodb的核心是提供无模式文档结构的持久化存储,它的两个核心点:提供接近(其实差距挺大的)缓存服务器的速度和接近关系数据库API(这个已经差不多了,连接查询是弱点)的接口 。memcache、redis如果是几年前,memcache、redis之间还有选择综合症,目前的市场,你可以直接选择redis,把精力完全放在redis身上去深入 。
这是是市场反应,这个相信对你的选择有绝对说服力 。memcache在性能方面没有优势了,同时redis提供了更丰富的数据结构,各种原子操作,以及持久化(RDB/AOF) 。如果你是小规模项目,你甚至可以直接用它设计消息订阅,使用它的即时消息订阅发布(你有消息持久化需求的话可以额外用redis的列表功能等定制) 。
mongodb相比redis和memcache,mongodb的性能差距就比较大了 。mongodb最核心的是它提供的B树索引,这个为我们提供了范围查询的基础,4.0提供了事务后,才算真正可以勉强在某些场合替代关系数据库 。动态性和内嵌设计后的便利操作,很适合做中间数据管理 。PS:我最先使用mongodb,其实主要是用它做LBS应用 。

推荐阅读