认识分片集群
主从和哨兵看可以解决高可用、高并发读的问题。但是依旧是解决不了下面的两个问题:
1、海量数据存储问题
2、高并发写的问题
Redis分片集群是一种分布式系统,用于将Redis的数据分布在多个Redis节点上。这种集群通过将数据分成多个部分,并将每个部分存储在不同的节点上,可以实现Redis的高可用性和高性能。
分片集群主要着眼于高扩展性,它由多个Redis实例组成一个集群,然后按照一定的规则,把收到的数据划分成多份,每一份用一个实例来保存。这样可以处理大量数据,解决海量数据存储和高并发写的问题。
在Redis分片集群中,通常会有多个master节点,每个master保存不同数据。每个master还可以拥有多个slave节点,并且master之间通过ping监测彼此的健康状态。客户端请求可以访问集群中的任意节点,最终都会被正确地转发到相应的节点。
这种分片集群的原理主要是通过“哈希分片”来实现的。哈希分片使用一个称为键的字符串作为输入,并根据键的哈希值来确定该键所属的节点。这样可以保证相同键的请求始终路由到同一个节点上,从而实现数据的分区和负载均衡。
分片集群存储数据
在Redis中,引入了一个哈希槽的概念,Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分哈希槽
下图是Redis存取数据的底层流程图
另外,在Redis存储数据的时候,可以设置将数据存储到1个节点上。设置一个相同的有效key部分,也就是下图中大括号中的数据。那么Redis只会对这个有效部分进行CRC16算法计算,那么这些数据都会被存储到1个节点上了
三、总结分片集群的优势
1、集群中有多个master,每个master保存不同的数据
2、每个master都可以有多个slave节点
3、master之间通过ping监测批次的健康状态
4、客户端请求可以访问集群的任意节点,最终都会被转发到正确的节点上(利用的还是CRC16算法)
至此,关于Redis的分片集群介绍完毕,后续还会持续更新,敬请期待!