Redis读写分离搭建的完整步骤


Posted in Redis onSeptember 14, 2021

1、概述

随着企业业务的不断扩大,请求的并发量不断增长,Redis可能终会出现无法负载的情况,此时我们就需要想办法去提升Redis的负载能力。

读写分离(主从复制)是一个比较简单的扩展方案,使用多台机器同时运行Redis服务,一台负责写服务,多台负责读服务,通过多台服务器对请求进行负载,大大提高了Redis服务的负载压力。

最常见的读写分离是一主二从的模式,一台主服务器负责Redis写入服务,两台从服务器负责Redis的读取服务,从服务器定时从主服务器复制Redis数据。

今天我们就来聊聊Redis的读写分离如何搭建的。

2、读写分离的搭建

2.1 场景说明

主服务器IP:192.168.1.144

从服务器A IP:192.168.1.22

从服务器B IP:192.168.1.8

这三台服务器上都已经安装好了Redis环境,安装方法参见我的另一篇文章《Redis的安装、基本使用以及与SpringBoot的整合》。

2.2 修改从服务器A和从服务B的Redis配置

replicaof   设置Redis主服务的IP和端口

masterauth  设置Redis主服务的密码

Redis读写分离搭建的完整步骤

2.3 删除从服务器A和从服务器B的数据文件

# cd/usr/local/redis/db

#rm -rf *.rdb *.aof

2.4 重启从服务器A和从服务器B

#cd /etc/init.d/

#./redis_init_script stop

# ./redis_init_script start

2.5 查看主从状态

# redis-cli

> AUTH zhuifengren

>info replication

主服务器状态:

Redis读写分离搭建的完整步骤

从服务器A状态:

Redis读写分离搭建的完整步骤

从服务器B状态:

Redis读写分离搭建的完整步骤

2.6 测试主从复制

此时,在主服务器,写入Redis值,在从服务器就可以读取。

3、Redis读写分离优势

透明兼容

读写分离和普通集群规格一样,都使用了redis-proxy做请求转发,多分片令使用存在一定的限制,但从主从升级单分片读写分离,或者从集群升级到多分片的读写分离集群可以做到完全兼容。

用户和redis-proxy建立连接,redis-proxy会识别出客户端连接发送过来的请求是读还是写,然后按照权重作负载均衡,将请求转发到后端不同的DB节点中,写请求转发给master,读操作转发给read-only replica(master默认也提供读,可以通过权重控制)。

用户只需要购买读写分离规格的实例,直接使用任何客户端即可直接使用,业务不用做任何修改就可以开始享受读写分离服务带来的巨大性能提升,接入成本几乎为0。

高可用

高可用模块(HA)监控所有DB节点的健康状态,为整个实例的可用性保驾护航。master宕机时自动切换到新主。如果某个read-only replica宕机,HA也能及时感知,然后重搭一个新的read-only replica,下线宕机节点。

除HA之外,redis-proxy也能实时感知每个read-only replica的状态。在某个read-only replica异常期间,redis-proxy会自动降低这个节点的权重,如果发现某个read-only replica连续失败超过一定次数以后,会暂时屏蔽异常节点,直到异常消失以后才会恢复其正常权重。

redis-proxy和HA一起做到尽量减少业务对后端异常的感知,提高服务可用性。

高性能

对于读多写少的业务场景,直接使用集群版本往往不是最合适的方案,现在读写分离提供了更多的选择,业务可以根据场景选择最适合的规格,充分利用每一个read-only replica的资源。

目前单shard对外售卖1 master + 1/3/5 read-only replica多种规格(如果有更大的需求可以提工单反馈),提供60万QPS和192 MB/s的服务能力,在完全兼容所有命令的情况下突破单机的资源限制。后续将去掉规格限制,让用户根据业务流量随时自由的增加或减少read-only replica数量。

4、综述

今天介绍了Redis读写分离的搭建,相对来说是比较容易的,但读写分离有个缺点,当主服务宕机后,从服务是不能升级成主服务的。

为了解决这个单点问题,后面我们会介绍Redis的哨兵模式和集群模式。

到此这篇关于Redis读写分离搭建的文章就介绍到这了,更多相关Redis读写分离搭建内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Redis 相关文章推荐
5分钟教你docker安装启动redis全教程(全新方式)
May 29 Redis
了解Redis常见应用场景
Jun 23 Redis
浅析Redis Sentinel 与 Redis Cluster
Jun 24 Redis
Redis入门教程详解
Aug 30 Redis
Window server中安装Redis的超详细教程
Nov 17 Redis
使用RedisTemplat实现简单的分布式锁
Nov 20 Redis
Springboot/Springcloud项目集成redis进行存取的过程解析
Dec 04 Redis
浅谈Redis跟MySQL的双写问题解决方案
Feb 24 Redis
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
Mar 16 Redis
Redis监控工具RedisInsight安装与使用
Mar 21 Redis
redis 解决库存并发问题实现数量控制
Apr 08 Redis
Redis 报错 error:NOAUTH Authentication required
May 15 Redis
在项目中使用redis做缓存的一些思路
Redis RDB技术底层原理详解
Sep 04 #Redis
使用redis实现延迟通知功能(Redis过期键通知)
Redis集群新增、删除节点以及动态增加内存的方法
Sep 04 #Redis
Redis字典实现、Hash键冲突及渐进式rehash详解
Sep 04 #Redis
基于Redis的List实现特价商品列表功能
Aug 30 #Redis
Redis 常见使用场景
Aug 30 #Redis
You might like
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
2013/06/25 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
php获取远程文件大小
2015/10/20 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
Python中异常重试的解决方案详解
2017/05/05 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
python导入pandas具体步骤方法
2019/06/23 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
《金钱的魔力》教学反思
2014/02/24 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
人事聘任通知
2015/04/21 职场文书
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers