Redis多机功能目的:以单台Redis服务器过渡到多台Redis服务器
Redis单机在生产环境中存在的问题
1、内存容量不足
Redis使用内存来存书数据库中的数据,但是对于一台机器来说,硬件的内存容量是有限的,当我们需要存储的数据量超过机器的内存数量时,一台服务器就没办法满足我们的要求;
比如:要存储128G的数据,但是机器最大只支持64G内存;
2、处理能力不足
和内存数量限制类似。由于服务器硬件的限制(机器配置/网络限制等),一台服务器能够处理的命令请求数量也是有限的,当我们需要处理的命令请求数量超过机器能够处理的命令请求数量时,一台服务器就没办法满足我们的要求了;
例子:每秒要处理20W次请求,但机器每秒钟只能处理10W次请求;
解决方案
为了解决内存容量不足和处理能力不足的问题,我们需要使用Redis的多机功能,这些功能的核心目的是将整个数据库分散部署在多台服务器上,并使用多台服务器来处理命令请求。
例如:
Redis单机模式:ClientA/ClientB/ClientC都请求ServerA;
Redis多机模式:ClientA请求ServerA;ClientB请求ServerB;ClientC请求ServerC;
将系统从一台服务器扩展到三台服务器,系统存储的数据量和处理的命令请求数量都会有所提高;
Redis多机功能具体实现
Redis提供的多机功能包括:
1、复制(replication):扩展系统处理请求的能力;
2、Sentinel:为系统提供高可用特性,减少故障停机出现;
3、集群(Cluster):扩展系统的数据库容量以及系统处理读写请求的能力,并提供高可用特性;
4、twemproxy:twitter开源的一个代理服务器,支持Redis和Memcached协议,可以扩展系统的数据库容量以及系统处理读写请求的能力;