redis有哪些架构,主从的话,主宕机了,会怎么样?cluster是怎么分片的,怎么知道放到哪一个节点里面
Redis 的主要架构有单机、哨兵、主从和集群等:
- 单机架构:Redis 是一个单线程、单进程的内存数据库,所有数据都存储在一个实例中,适合小规模数据的需求。
- 哨兵架构:在多个 Redis 实例之间部署哨兵,用于监控 Redis 实例的健康状况并实现自动故障转移,提高数据的可用性。
- 主从架构:将 Redis 实例分为一个主节点和若干个从节点,主节点提供写入操作、从节点提供读取操作,并通过异步复制机制实现数据的同步和备份。
- 集群架构:将多个 Redis 实例组成一个集群,通过数据分片和节点间的数据同步实现数据的高可用和性能的扩展。
对于 Redis 主从架构,当主节点宕机时,从节点无法访问主节点,此时可以选择手动或自动进行故障迁移,将其中一个从节点晋升为主节点,其他从节点同步新的主节点的数据,以保证数据的可用性和一致性。
Redis 集群架构采用哈希槽(Hash Slot)实现数据的分片,将数据分散到不同的节点上存储,每个节点负责一部分数据槽的存储和管理。当客户端需要访问某个 key 时,Redis 客户端使用 key 对应的 hash 值来确定该 key 被分配到哪个槽,然后将操作发送到负责该槽的节点上,从而实现数据的读写操作。当需要添加或删除节点时,Redis 的集群会自动将数据重新分配到新的节点上,使得数据在节点之间的负载均衡,同时保证数据的一致性。