前言
在了解Redis相关的高级功能前,我们首先要了解单台Redis在开发中可能遇到的问题,以及相关的瓶颈。
一. 可能遇到的问题
一般来说,要将Redis运用于工程项目中,只使用一台Redis是万万不能的,原因如下:
[1] 从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大。(容错性)
[2] 从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内容量为256G,也不能将所有内容用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。
二. 基本概述
2.1高可用
“高可用性”通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高可用性。(一直都能用)
2.2高并发
高并发是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。
高并发相关常用的一些指标有响应时间,吞吐量,每秒查询率,并发用户等
响应时间:系统对请求做出响应的时间,例如系统处理一个HTTP请求需要200ms,这个200ms就是系统调的响应时间
吞吐量:单位时间内处理请求数量
每秒查询率(QPS): 每秒响应请求数,在互联网领域,这个指标和吞吐量区分没有那么明显。
并发用户数:同时承载正常使用系统功能的用户数。例如一个即时通讯系统,同时在线量一定程度上代表了系统并发用户数。
2.3 提升系统并法性能
提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up)与水平扩展
垂直扩展:扩展单个服务器的性能
水平扩展:只要增加服务器的数量,就能线性扩展系统性能,水平扩展对系统架构设计是有要求的,难点在于:如何在架构各层进行水平扩展设计。
三. Redis的主从复制
在上面我们了解到单个Redis服务器使用的瓶颈,以及现代互联网开发中追求的高可用与高并发。Redis也推出了解决这种瓶颈与适应这种场景的方法----主从复制
3.1 简介
应用场景:电子商务网站上的商品,一般都是一次上传,无数次浏览的,说专业点也就是“读多写少”.
主从复制:一个Redis服务可以有多个该服务的复制品,这个Redis服务称为Master,其他称为Slaves。
如图中所示,我们将一台Redis服务器作为主库(Masrer),其他三台作为从库(Slave),主库只负责写数据,每次有数据更新都将更新的数据同步到它所有的从库中,而从库只负责读数据,这样一来,就有两个好处:
[1] 读写分离,不仅可以提高服务器的负载能力,并且可以根据请求的规模自由增加或减少多少从库的数量。
[2] 数据被复制成了好几份,就算有一台机器出现故障,也可以使用其他机器的数据快速恢复。
需要注意的是:在Redis主从模式中,一台主库可以拥有多个从库,但是一个从库只能隶属于一个主库。
3.2 Redis主从配置
在Redis中,要实现主从复制架构非常简单,只需要在从数据库的配置文件中加上如下命令即可。
[1] 主数据库不需要任何配置。创建一个从数据库
./bin/redis-server ./redis.conf --port 6380 --slaveof 127.0.0.1 6379
相关参数解析:
– port 6380 //从服务器的端口号(这个端口号可以自己定义)
–slaveof 127.0.0.1 6379 //指定主服务器
加上slaveof参数启动另一个Redis实例作为从库,并且监听6380端口
[2] 登录到从服务器客户端(从服务器只能进行查询功能)
./bin/redis-cli -p 6380 -a guoweixin # 其中6380使我们自定义的从服务器的端口号, guoweixin是我们设置的Redis密码
变回主:slaveof on one //不是任何从
变回从:slaveof ip地址 端口号