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 相关文章推荐
Redis遍历所有key的两个命令(KEYS 和 SCAN)
Apr 12 Redis
Redis安装启动及常见数据类型
Apr 14 Redis
SpringBoot 集成Redis 过程
Jun 02 Redis
解析Redis Cluster原理
Jun 21 Redis
Redis如何实现分布式锁
Aug 23 Redis
SpringBoot集成Redis的思路详解
Oct 16 Redis
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
Mar 16 Redis
Redis调用Lua脚本及使用场景快速掌握
Mar 16 Redis
Redis高可用集群redis-cluster详解
Mar 20 Redis
Redis 异步机制
May 15 Redis
Redis基本数据类型List常用操作命令
Jun 01 Redis
Redis实战之Lettuce的使用技巧详解
Dec 24 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(1)
2006/10/09 PHP
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
数据结构之利用PHP实现二分搜索树
2020/10/25 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
three.js 入门案例详解
2018/01/23 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
我爱我的祖国演讲稿
2014/05/04 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
离婚协议书格式
2014/11/21 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
寒假致家长的一封信
2015/10/10 职场文书
MySQL 聚合函数排序
2021/07/16 MySQL