缓存杂谈(六) Redis的高并发及主从集群入门

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis的高并发及主从集群入门
保证Redis高并发的方式
  1. 读写分离

    Redis架构做为主从架构,一主多从,主负责写,从负责读,所有的读请求都走从节点,这种方式还有个好处就是支持水平扩容

Redis Replication的核心机制
  1. Redis采用异步方式复制数据到Slave节点,不过Redis2.8开始,slave node会周期性的确认自己每次复制的数据量
  2. 一个Master node是可以配置多个slave node的
  3. slave node也可以连接其他的slave node
  4. slave node做复制的时候,是不会block master node 的正常工作的
  5. slave node做复制的时候,也不会block 对自己的查询操作,他会用旧的数据集来提供服务,但是复制完成的时候,需要删除旧数据集,加载新数据集,这个时候就会暂停对外服务了
  6. slave node主要用来进行横向扩容,做读写分离,扩容的slave node可以提高读的吞吐量
Master 持久化对住从架构的安全保障的意义

如果采用了主从架构,那么建议必须开启master node的持久化

不建议用slave node作为master node的数据热备,因为那样的话,如果你关掉Master的持久化,可能再master宕机的时候数据是空的,然后可能一经过复制,salve node数据也丢失了,几十采用后续讲解的高可用机制,slave node可以自动接管Master node,但是也可能sentinal还没检测到master failure ,master node 就重新启动了,还是可能导致上面的所有slave node数据清空故障

主动架构的核心原理

主从架构的和核心原理

当启动一个slave node的时候,它会发送一个PSYNC命令给master node

如果这事slave node重新链接master node,那么master node仅仅恢复至给slave部分缺少的数据,否则如果是slave node第一次链接master node,那么会触发一次Full resynchronization, 开始full resynchronization 的时候,master会启动一个后台线程,开始生成一份RDB快照文件,同时还会从客户端收到所有写命令缓存到内存中,RDB文件生成完毕之后,master会将这个RDB发送给Slave,Slave会先写入本地磁盘,然后再从本地磁盘加载到内存中,然后master会将内存中缓存的写命令发送给slave,slave也会同步这些数据

slave node如果跟master node有网络故障,断开了链接,会自动重连,master如果发现有多个slave node都来重新连接,仅仅会启动一个rdb save操作,用一份数据服务所有的slave node

image-20230514103130407.png

主从复制的断点续传

从Redis 2.8开始,就支持主从复制的断点续传,如果主从复制过程中,网络连接断掉了,那么可以接着上次复制的地方,继续复制下去,而不是从头开始复制一份

master node会在内存中创建一个basklog, master和slave都会保存一个replica offset 还有一个master,id,offset就是保存在backlog中的,如果master和slave网络连接断掉了,slave会让master从上次的replica offset开始继续复制

但是如果没有找到对应的offset,那么就会执行一次resynchronization

无磁盘化复制

master再内存中直接创建rdb,然后发送给slave,不会在自己本地落地磁盘了

需要通过下面两个参数进行配置

repl-diskless-sync:是否开启无磁盘化复制

repl-diskless-sync-delay:等待一定时长在开始复制,因为要等更多slave重新链接过来

image-20230514094024113.png

过期key处理

slave不会过期key,只会等待master过期key,如果master过期了一个Key,或者通过LRU淘汰了一个key,那么会模拟一条del命令发送给slave

image-20230514105207103.png

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
21天前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
22天前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
5天前
|
存储 缓存 NoSQL
解决Redis缓存击穿问题的技术方法
解决Redis缓存击穿问题的技术方法
19 2
|
5天前
|
缓存 NoSQL Redis
解决 Redis 缓存穿透问题的有效方法
解决 Redis 缓存穿透问题的有效方法
17 2
|
1月前
|
缓存 NoSQL 关系型数据库
MySQL与Redis缓存一致性的实现与挑战
在现代软件开发中,MySQL作为关系型数据库管理系统,广泛应用于数据存储;而Redis则以其高性能的内存数据结构存储特性,常被用作缓存层来提升数据访问速度。然而,当MySQL与Redis结合使用时,确保两者之间的数据一致性成为了一个重要且复杂的挑战。本文将从技术角度分享MySQL与Redis缓存一致性的实现方法及其面临的挑战。
64 2
|
5月前
|
机器学习/深度学习 NoSQL Redis
Redis高可用之集群架构(第三部分)
Redis高可用之集群架构(第三部分)
|
12月前
|
Kubernetes NoSQL Redis
教你在 Kubernetes 上部署 Redis 高可用集群?
教你在 Kubernetes 上部署 Redis 高可用集群?
164 0
|
存储 缓存 监控
Redis高可用之主从复制、哨兵、cluster集群
Redis高可用之主从复制、哨兵、cluster集群
224 0
|
5月前
|
监控 NoSQL 程序员
Redis 高可用篇:你管这叫 Sentinel 哨兵集群原理
Redis 高可用篇:你管这叫 Sentinel 哨兵集群原理
117 5
|
5月前
|
NoSQL Redis Ruby
redis高可用集群搭建
redis高可用集群搭建
下一篇
无影云桌面