Redis拷打第六讲

21. Redis集群有哪些方案,知道吗?

Redis 常见集群方案有三种:主从复制、哨兵模式和 Redis Cluster。

主从复制是一个 master 搭配多个 slave。master 主要负责写,也可以读;slave 会同步 master 的数据,通常承担读请求。它主要解决读扩展和数据备份问题,但 master 宕机后不能自动故障转移。

哨兵模式是在主从复制的基础上增加 Sentinel 监控。Sentinel 会监控 master 和 slave 的状态,如果 master 宕机,会自动从 slave 中选举新的 master,并通知客户端更新连接,所以它主要解决 Redis 的高可用问题。

Redis Cluster 是分片集群。它通过 hash slot 把数据分散到多个 master 节点上,每个 master 负责一部分槽位和数据,每个 master 也可以配置 slave 用于故障转移。它既能扩展 Redis 的内存容量和整体吞吐量,也能提高可用性。

22. 那你来介绍一下主从同步。

Redis 主从同步一般用于读写分离和数据备份,通常是一主多从,master 主要负责写,slave 同步 master 的数据并承担读请求。

主从同步分为全量同步和增量同步。第一次建立主从关系,或者 slave 落后 master 太多时,会触发全量同步。master 会生成 RDB 快照发送给 slave,slave 清空本地数据后加载 RDB,同时 master 会把生成和发送RDB 期间产生的新写命令缓存起来,等 slave 加载完成后再发送过去。

全量同步完成后,master 后续收到的写命令会持续同步给 slave,保持数据同步。如果 slave 短暂断开后重连,会尝试增量同步,会带上自己的复制偏移量 offset,master 根据 replication id 和 offset 判断能不能从 repl_backlog 复制积压缓冲区中补发缺失命令。如果可以,就增量同步;如果不可以,就重新全量同步。

23. 怎么保证Redis的高并发高可用?

Redis 的高并发和高可用要分开说。

高并发方面,Redis 本身是基于内存的,读写性能很高;同时可以通过主从复制做读写分离,让 slave 分担读请求。如果数据量或者写压力更大,可以使用 Redis Cluster,通过 hash slot 将数据分散到多个 master 节点上,提升整体吞吐量和容量。

高可用方面,可以使用主从复制加哨兵模式。Sentinel 会监控 master 和 slave,如果 master 宕机,会自动从 slave 中选举新的 master,并通知客户端连接新的 master。旧 master 恢复后会作为 slave 挂到新的 master 下。

所以主从复制主要提升读并发和数据备份,哨兵主要解决自动故障转移,Redis Cluster 既可以做分片扩容,也可以配合 slave 实现高可用。

24. 你们使用Redis是单点还是集群,哪种集群?

我们项目中使用的是 Redis 主从加哨兵模式,是一主一从。master 主要负责写,slave 同步数据并承担读请求,Sentinel 负责监控节点状态和故障转移。

当时没有使用 Redis Cluster,主要是因为数据量和写入压力还没有达到必须分片的程度。主从加哨兵已经可以满足读扩展、数据备份和高可用,维护成本也更低。

如果单实例内存压力变大,我们会优先按业务拆分 Redis 实例,比如不同服务使用独立的 Redis 主从节点,避免单个 Redis 实例过大,影响 RDB、主从同步和故障恢复。

相关推荐
Joy T6 小时前
Spring AI 项目中的 pom.xml、application.yml 与 Nacos:从依赖管理到运行配置
spring·nacos·pom.xml·profile·参数配置·application.yml
禾小西8 小时前
Redis:从两大维度和三大主线建立知识体系
数据库·redis·缓存
禾小西9 小时前
Redis 数据结构:快速的 Redis 有哪些慢操作?
数据结构·数据库·redis
行百里er12 小时前
Redis 事务与 Pipeline:批量操作的正确姿势
redis
fundoit13 小时前
为什么需要 Access Token 和 ID Token 两个令牌
java·spring·架构·github·oauth2
fengkai454513 小时前
十二、Redis -1
运维·数据库·redis
鱼宵13 小时前
Spring AI 流式输出:Flux + SSE 打字机,回答不再干等三秒
java·人工智能·spring·sse·springai·流式输出
小鹿的周先生14 小时前
第19章-Agent
java·spring·ai
写后端的胖头鱼14 小时前
Redis 的 RDB 和 AOF
java·数据库·redis
禾小西15 小时前
Redis AOF 日志:宕机了,如何避免数据丢失?
java·redis·mybatis