iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >redis客户端怎么实现高可用读写分离
  • 140
分享到

redis客户端怎么实现高可用读写分离

2023-06-20 13:06:01 140人浏览 独家记忆
摘要

小编给大家分享一下redis客户端怎么实现高可用读写分离,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!背景(1) Redis单机的读写性能轻松上大几万,不过线上环境不会只部署光秃秃的一个节点,还是会配合 sentinel

小编给大家分享一下redis客户端怎么实现高可用读写分离,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

背景

(1) Redis单机的读写性能轻松上大几万,不过线上环境不会只部署光秃秃的一个节点,还是会配合 sentinel 再部署一个 slave作为高可用节点的;
但是standby的slave节点是不对外提供服务端的,一定程度上造成了浪费资源

(2) 当业务不断发展,原来单节点缓存的数据(如,商品信息缓存、配置信息等)的查询qps不断升高(写qps增长不多),突破十几万、几十万的的时候,此时一个节点就扛不住了,我们就需要增加几个redis slaves节点来分担这些查询的压力 也就是读写分离

但是,常用的 redis 客户端jedis并不支持读写分离能力

实现方式

(1) 从配置中心获取 master 和 slaves 的连接信息,分别初始化好一个连接master的写连接池和一组slave的读连接池
(2) 将命令进行分类:执行写命令则从 master的连接池取连接然后执行,如果是读命令则从slave的连接池中取出连接执行
可能有多个slave节点,可以按照一定的策略进行负载均衡(权重、随机、轮询...etc) 从其中一个 slave节点的连接池获取连接

大概长这样:

redis客户端怎么实现高可用读写分离

高可用版本

前面的实现方式正常情况下是可以的

但是:
(1) 如果运行期间 master挂了怎么办? 如何自动 failover 切换?
(2) 如果流量突增,需要动态扩容一个或多个 slave节点,如何动态生效?

那就不能从配置文件取master和slaves的 ip+port 了,得从redis ha的组件去动态获取 当前master 和可用slave列表的节点信息 => sentinel

1.初始化

向 sentinel 发送命令获取master和slaves的节点信息

//获取当前masterName标识的当前master节点信息,哨兵可监控多个 mater ha,所以要用<masterName>区分SENTINEL get-master-addr-by-name <masterName>//获取可用的slaves列表信息SENTINEL slaves <masterName>

redis客户端怎么实现高可用读写分离

拿到连接后,继续用开头的方式去创建连接池就行了

2. 动态failover、扩容

初始化完毕后,在运行期间master节点,和slaves还是可能变化的, 如
(1) master故障、网络分区,sentinel 提升一个slave为新的master
(2) 新增slave节点应对突增流量

我们如何能不重启客户端的情况下,动态切换?

sentinel 在进行master切换、slave变更等操作的时候都会向对应的 channel 发布事件,我们可以基于这些事件感知到相应的变化
参考: https://redis.io/topics/sentinel

1 failover切换 master

当 sentinel 进行master failover切换的时候,它会向channel: switch-master 发送通知,我们在客户端订阅这个channel,收到事件后,重新进行初始化的步骤即可

redis客户端怎么实现高可用读写分离

2 扩容slave

当新的 slave 节点加入, sentinel 感知到则会向channel: +slave 发布事件,我们监听到后,重新获取slaves节点信息重建slaves的连接池就可以了(这边不涉及master的变化)

redis客户端怎么实现高可用读写分离

看完了这篇文章,相信你对“redis客户端怎么实现高可用读写分离”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: redis客户端怎么实现高可用读写分离

本文链接: https://www.lsjlt.com/news/297069.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis客户端怎么实现高可用读写分离
    小编给大家分享一下redis客户端怎么实现高可用读写分离,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!背景(1) redis单机的读写性能轻松上大几万,不过线上环境不会只部署光秃秃的一个节点,还是会配合 sentinel ...
    99+
    2023-06-20
  • redis客户端实现高可用读写分离的方式详解
    背景 (1) redis单机的读写性能轻松上大几万,不过线上环境不会只部署光秃秃的一个节点,还是会配合 sentinel 再部署一个 slave作为高可用节点的; 但是standby...
    99+
    2024-04-02
  • redis读写分离怎么实现
    Redis读写分离可以通过以下几种方式实现:1. 主从复制(Master-Slave):将一个Redis实例作为主节点(Master...
    99+
    2023-09-06
    redis
  • Redis实现读写分离有什么用
    这篇文章给大家分享的是有关Redis实现读写分离有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。读写分离Redis 通过副本,实现「主-从」运行模式,是故障切换的基石,用来提高系统运行可靠性。也支持读写分离...
    99+
    2023-06-27
  • redis怎么读写分离
    采用读写分离架构,通过创建主从复制组,将写入操作交给主实例,而读取操作交给从实例,从而提升了 redis 的性能和可用性。 Redis 读写分离 为了提高 Redis 的性能和可用性,...
    99+
    2024-04-08
    redis
  • redis读写分离代码怎么写
    使用 redis 实现读写分离代码,通过连接写服务器和多个读服务器来实现:1. 写操作使用写服务器客户端进行;2. 读操作使用读服务器客户端进行;3. 确保数据一致性需要定期同步写服务器...
    99+
    2024-04-08
    python redis
  • SpringBoot读写Redis客户端并实现技术切换功能
    目录读写客户端jedis技术SpringBoot整合Redis 读写客户端 首先应该打开redis服务; cd命令进入Redis安装目录下: 进入Redis客户端: redis-c...
    99+
    2023-01-30
    SpringBoot读写Redis客户端 SpringBoot Redis切换
  • SpringBoot怎么实现读写分离
    这篇文章主要讲解了“SpringBoot怎么实现读写分离”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么实现读写分离”吧!前言根据公司业务需求,项目需要读写分离,所以记...
    99+
    2023-06-30
  • 怎么实现mysql读写分离
    这篇文章主要介绍“怎么实现mysql读写分离”,在日常操作中,相信很多人在怎么实现mysql读写分离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么实现mysql读写分离”...
    99+
    2024-04-02
  • SpringBoot读写Redis客户端并实现Jedis技术切换功能
    目录读写客户端jedis技术SpringBoot整合Redis 读写客户端 首先应该打开redis服务; cd命令进入Redis安装目录下: 进入Redis客户端: redis-cli.exe -h 127.0.0.1...
    99+
    2023-01-30
    SpringBoot读写Redis客户端 SpringBoot Redis切换
  • mybatis中怎么实现读写分离
    本篇文章为大家展示了mybatis中怎么实现读写分离,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、spring aop实现首先application-test.yml增加如下数据源的配置spri...
    99+
    2023-06-20
  • MyCat中怎么实现读写分离
    这期内容当中小编将会给大家带来有关MyCat中怎么实现读写分离,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、mycat实现读写分离这里没有用到mysql03主机,读写...
    99+
    2024-04-02
  • 使用Django怎么实现MySQL读写分离
    本篇文章为大家展示了使用Django怎么实现MySQL读写分离,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。主从同步介绍和优点在多台数据服务器中,分为主服务器和从服...
    99+
    2024-04-02
  • 使用Mycat怎么实现MySQL读写分离
    今天就跟大家聊聊有关使用Mycat怎么实现MySQL读写分离,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。搭建环境操作系统:CentOS-6.5-x...
    99+
    2024-04-02
  • MySQL高可用实现:主从结构下ProxySQL中的读写分离
    原文: http://www.enmotech.com/web/detail/1/714/1.html ( 复制链接,打开浏览器即可查看原文 )  墨墨导读:Pro...
    99+
    2024-04-02
  • SpringBoot中怎么利用MyCat实现读写分离
    SpringBoot中怎么利用MyCat实现读写分离,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。MySQL配置主从关系说明 192.168.0.10...
    99+
    2023-06-16
  • Redis如何实现数据库读写分离详解
    前言 Redis是一种NoSQL的文档数据库,通过key-value的结构存储在内存中,Redis读的速度是110000次/s,写的速度是81000次/s,性能很高,使用范围也很广。Redis是一个key-...
    99+
    2024-04-02
  • ​java实现客户端调用的代码怎么写
    下面是一个简单的Java客户端调用示例代码: import java.io.BufferedReader; import java....
    99+
    2023-10-23
    ​java
  • 浅析php+mysql怎么实现读写分离
    MySQL作为目前最流行的数据库之一,在应用中大量被使用。在高并发和数据量较大的情况下,由于MySQL的读写并发性能不足,为了提高MySQL的并发性能,读写分离成为了必要的方案。读写分离的原理是将读操作和写操作分别放在不同的MySQL实例上...
    99+
    2023-05-14
    读写分离 php mysql
  • Java基于JNDI怎么实现读写分离
    这篇文章主要介绍“Java基于JNDI怎么实现读写分离”,在日常操作中,相信很多人在Java基于JNDI怎么实现读写分离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java基于JNDI怎么实现读写分离”的疑...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作