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

本文涉及的产品
云数据库 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
目录
相关文章
|
4天前
|
存储 缓存 NoSQL
Redis多级缓存指南:从前端到后端全方位优化!
本文探讨了现代互联网应用中,多级缓存的重要性,特别是Redis在缓存中间件的角色。多级缓存能提升数据访问速度、系统稳定性和可扩展性,减少数据库压力,并允许灵活的缓存策略。浏览器本地内存缓存和磁盘缓存分别优化了短期数据和静态资源的存储,而服务端本地内存缓存和网络内存缓存(如Redis)则提供了高速访问和分布式系统的解决方案。服务器本地磁盘缓存因I/O性能瓶颈和复杂管理而不推荐用于缓存,强调了内存和网络缓存的优越性。
22 1
|
21小时前
|
缓存 NoSQL Java
springboot业务开发--springboot集成redis解决缓存雪崩穿透问题
该文介绍了缓存使用中可能出现的三个问题及解决方案:缓存穿透、缓存击穿和缓存雪崩。为防止缓存穿透,可校验请求数据并缓存空值;缓存击穿可采用限流、热点数据预加载或加锁策略;缓存雪崩则需避免同一时间大量缓存失效,可设置随机过期时间。文章还提及了Spring Boot中Redis缓存的配置,包括缓存null值、使用前缀和自定义过期时间,并提供了改造代码以实现缓存到期时间的个性化设置。
|
5天前
|
缓存 NoSQL Redis
深度解析Redis的缓存双写一致性
【4月更文挑战第20天】
30 1
|
5天前
|
存储 NoSQL Linux
Redis入门到通关之Redis5种网络模型详解
Redis入门到通关之Redis5种网络模型详解
21 1
|
5天前
|
NoSQL Ubuntu 关系型数据库
Redis入门到通关之Redis网络模型-用户空间和内核态空间
Redis入门到通关之Redis网络模型-用户空间和内核态空间
11 1
|
5天前
|
存储 NoSQL 算法
Redis入门到通关之Redis数据结构-Hash篇
Redis入门到通关之Redis数据结构-Hash篇
16 1
|
5天前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-Set篇
Redis入门到通关之Redis数据结构-Set篇
13 1
|
5天前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-ZSet篇
Redis入门到通关之Redis数据结构-ZSet篇
11 1
|
5天前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-List篇
Redis入门到通关之Redis数据结构-List篇
22 1
|
5天前
|
存储 NoSQL 安全
Redis入门到通关之Redis数据结构-String篇
Redis入门到通关之Redis数据结构-String篇
27 1