单机版:单机部署,单机Redis能够承载的QPS大概就在上万到几万不等,这种部署方式很少使用,存在的问题:
内存容量有限处理能力有限无法高可用 单机或单节点Redis存在的四大问题: 数据丢失问题:Redis是内存存储,服务重启可能会丢失数据 => 利用Redis数据持久化的功能将数据写入磁盘并发能力问题:单节点Redis并发能力虽然不错,但也无法满足如618这样的高并发场景 => 搭建一主多从集群,实现读写分离单点故障 - 故障恢复问题:如果Redis宕机,则服务不可用,需要一种自动的故障恢复手段 => 利用Redis哨兵,实现健康检测和自动故障恢复存储能力问题:Redis基于内存存储,单节点能存储的数据量难以满足海量数据要求 => 搭建分片集群,利用插槽机制实现动态扩容,从理论上来讲,它的存储能力是没有上限的 介绍一下Redis的集群模式? Redis有三种主要的集群模式,用于在分布式环境中实现高可用性和数据复制,这些集群模式分别是:主从复制(Master-Slave Replication)、哨兵模式(Sentinel)和Redis Cluster模式。 Redis集群的目的是什么? Redis集群可以将数据分割到不同的服务器节点上,当Redis集群中的部分节点宕机或不可用时,Redis其它节点仍然能够继续处理命令,不至于整个Redis集群不可用,用来保证可用性。 Redis集群如何选择数据库? Redis集群目前无法做数据库选择,默认在0号数据库。 Redis集群最少需要几个主节点? Redis集群正常工作,至少需要3个主节点。 1. Redis主从 搭建主从架构主从数据同步原理单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。
主从模式简介一主多从
主从复制是Redis最简单的集群模式,这个模式主要是为了解决单点故障的问题,所以将数据复制到多个副本中,这样即使有一台服务器出现故障,其它服务器依然可以继续提供服务。主从复制模式中,包括一个主节点(Master)和一个或多个从节点(Slave),主节点负责处理所有写操作和读操作,而从节点则负责复制主节点的数据,并且只能处理读操作,当主节点发送故障时,可以将一个从节点升级为主节点,实现故障转移(需要手动实现)。 1.1.主从集群结构 Redis的集群往往都是主从集群,它往往会有一个Master主节点,多个Slave / Replica从节点。下图就是一个简单的Redis主从集群结构:
如图所示,集群中有一个Master主节点、两个Slave从节点(现在叫Replica) => 起码要包含三个节点,要有三个Redis实例,一主两从。
在Redis 5.0以前,从节点是叫Slave的,后来改名叫Replica => 都是代表从节点当我们通过Redis的Java客户端访问主从集群时,应该做好路由:
如果是写操作,应该访问Master主节点,Master主节点会自动将数据同步给两个Slave从节点
如果是读操作,建议访问各个Slave从节点,从而分担并发压力
Master主节点可以执行set命令(写操作),Replica从节点只能执行get命令(读操作) 。
为什么Redis要做成这种主从的集群,而不是传统的负载均衡集群呢? 这是因为Redis应用当中大多数都是读多写少的场景,也就是查询比较多,而增删改比较少,既然如此,我们