redis cluster

redis集群的几种实现方式

  • 客户端分片,如redis的java客户端jedis使用一致性hash,优点是分区逻辑可控,缺点是需要自己处理数据路由,高可用,故障转移等问题
  • 代理方案,如codis,优点是简化客户端分布式逻辑和升级维护里边,缺点是加重架构部署复杂度和性能消耗
  • redis cluster 优点 redis官方支持的集群方案,有监控,高性能,缺点 数据迁移需要人工干涉,只能使用0号数据库等

cluster采用的数据分布方法

   cluster采用了虚拟槽分区的方法,所有的健根据哈希函数映射到0-16383整数槽内,计算公式 slot=CRC16(key) & 16383,每一个节点负责维护一部分槽以及槽所映射的健值数据,虚拟槽的优点

  1. 解藕数据和节点之间的关系,简化了节点扩容和收缩难度
  2. 节点自身维护槽的映射关系,不需要客户端或者代理服务维护槽分区元数据
  3. 支持节点,槽,健之间的映射查询,用于数据路由,在线伸缩等场景

存在的限制

  • key批量操作支持有限,如mset,mget目前值支持相同slot值的key执行批量操作,对于映射不同slot值的key由于执行mget等操作可能存在于多个节点上因此不被支持
  • key事务操作支持有限
  • key做为数据分区的最小粒度,因此不能将一个大的健值对象如hash,list等映射到不同的节点
  • 不支持多数据库空间,集群模式下只能使用一个数据库空间,即db0
  • 复制结构只支持一层,从节点只能复制主节点,不支持嵌套树状复制结构

你可能感兴趣的:(其他)