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

简介: 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

目录
相关文章
|
存储 缓存 NoSQL
Redis 服务器全方位介绍:从入门到核心原理
Redis是一款高性能内存键值数据库,支持字符串、哈希、列表等多种数据结构,广泛用于缓存、会话存储、排行榜及消息队列。其单线程事件循环架构保障高并发与低延迟,结合RDB和AOF持久化机制兼顾性能与数据安全。通过主从复制、哨兵及集群模式实现高可用与横向扩展,适用于现代应用的多样化场景。合理配置与优化可显著提升系统性能与稳定性。
971 0
|
11月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
979 25
|
12月前
|
存储 缓存 NoSQL
Redis专题-实战篇二-商户查询缓存
本文介绍了缓存的基本概念、应用场景及实现方式,涵盖Redis缓存设计、缓存更新策略、缓存穿透问题及其解决方案。重点讲解了缓存空对象与布隆过滤器的使用,并通过代码示例演示了商铺查询的缓存优化实践。
450 1
Redis专题-实战篇二-商户查询缓存
|
11月前
|
缓存 运维 监控
Redis 7.0 高性能缓存架构设计与优化
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Redis 7.0高性能缓存架构,探索函数化编程、多层缓存、集群优化与分片消息系统,用代码在二进制星河中谱写极客诗篇。
1910 3
|
12月前
|
缓存 NoSQL 关系型数据库
Redis缓存和分布式锁
Redis 是一种高性能的键值存储系统,广泛用于缓存、消息队列和内存数据库。其典型应用包括缓解关系型数据库压力,通过缓存热点数据提高查询效率,支持高并发访问。此外,Redis 还可用于实现分布式锁,解决分布式系统中的资源竞争问题。文章还探讨了缓存的更新策略、缓存穿透与雪崩的解决方案,以及 Redlock 算法等关键技术。
|
机器学习/深度学习 NoSQL Redis
Redis高可用之集群架构(第三部分)
Redis高可用之集群架构(第三部分)
|
12月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
Kubernetes NoSQL Redis
教你在 Kubernetes 上部署 Redis 高可用集群?
教你在 Kubernetes 上部署 Redis 高可用集群?
1122 0
|
存储 缓存 监控
Redis高可用之主从复制、哨兵、cluster集群
Redis高可用之主从复制、哨兵、cluster集群
631 0
|
缓存 NoSQL Java
Redis缓存高可用集群
Redis缓存高可用集群