问题引入:
主从和哨兵可以解决高可用和高并发读的问题,但是依然没有解决:
海量数据存储问题
高并发写的问题
使用分片集群可以解决上述问题,分片集群特点:
- 集群中有多个master,每个master保存不同数据
- master支持多个slave,有了高并发读能力
- master之间通过ping监测彼此健康状态。起到了哨兵作用(不需要单独的哨兵服务)
- 客户端请求可以访问集群任意节点,最终都会被转发到正确的节点(请求路由)
分片集群结构-数据读写
Redis分片集群引入了哈希槽的概念,Redis集群有16384个哈希槽,每个Key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。