Redis数据库 | 发布订阅、主从复制、哨兵模式、缓存雪崩

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


Redis发布订阅

Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息

Redis 客户端可以订阅任意数量的频道

Redis主从复制

Redis主从复制是指在Redis中设置一个主节点(Master)和一个或多个从节点(Slave),主节点将自己的数据复制到从节点上,从节点会自动同步主节点上的数据,以实现数据的备份和读写分离

  • 数据备份和容灾:通过主从复制,可以将主节点的数据复制到一个或多个从节点上,从而实现数据的备份和容灾。当主节点发生故障或数据丢失时,可以快速切换到从节点,保证数据的可用性和持久性
  • 负载均衡:通过将读操作分摊到多个从节点上,可以减轻主节点的负载压力。主节点专注于处理写操作,而从节点处理读操作,提高系统的整体性能和吞吐量
  • 高可用性:主从复制可以提高系统的可用性。当主节点发生故障时,可以快速切换到从节点,实现自动故障转移,减少服务中断时间,提高系统的稳定性和可靠性
  • 数据分析和报表生成:通过将读操作分摊到从节点上,可以用于数据分析和报表生成。由于主节点专注于处理写操作,从节点可以用于查询和分析数据,提供实时的数据分析和报表生成功能
  • 高并发读取:通过将读操作分摊到多个从节点上,可以提高系统的并发读取能力。多个从节点可以同时处理读请求,提高系统的并发处理能力,减少读取的响应时间
info replication 获取关于主从复制的相关信息
slaveof ip port 将当前Redis节点设置为从节点,并指定一个主节点进行主从复制
slaveof no one 命令用于将当前Redis节点从从节点切换为独立的主节点,解除与主节点的连接

哨兵模式

哨兵模式是Redis提供的一种高可用性解决方案,用于监控和管理Redis节点的自动故障转移

  • 主观下线:一个哨兵节点基于自己的主观判断,认为一个Redis节点(主节点或从节点)不可用的状态;当一个哨兵节点检测到一个节点无法响应心跳或超时时,它会将该节点标记为主观下线;主观下线只是一个哨兵节点自己的看法,并不代表其他哨兵节点或客户端也认为该节点不可用
  • 客观下线:多个哨兵节点之间达成共识,认为一个节点不可用的状态;当多个哨兵节点通过消息通信交换信息后,如果它们都达成共识,认为一个节点不可用,那么该节点将被标记为客观下线;客观下线是基于多个节点的共识,具有更高的可靠性和准确性

单哨兵模式

单哨兵模式(Single Sentinel mode)是哨兵模式的一种简化形式,适用只有一个Redis主节点和一个哨兵节点的情况

多哨兵模式

多哨兵模式是哨兵模式的一种扩展形式,适用于需要更高可靠性和容错性的情况

Redis缓存穿透与雪崩

缓存穿透

Redis缓存穿透(Cache Penetration):恶意请求或者非法请求绕过缓存层直接访问数据库。当一个请求查询一个不存在的数据时,缓存层无法命中缓存,也无法从数据库中获取数据,导致每次请求都访问数据库,增加数据库的负载,并且无法获得有效的缓存

布隆过滤器

所有可能的查询参数以hash形式存储,不符合则丢弃,避免对底层存储系统的查询压力

缓存空对象

存储层不命中后,即使返回的空对象也将其存储,并设置过期时间,之后再访问这个数据将会从缓存中获取,保护后端数据源

缓存雪崩

Redis缓存雪崩(Cache Avalanche):缓存中的大量数据同时过期或者缓存服务器宕机,导致大量请求直接访问数据库,造成数据库瞬时压力过大,甚至引起数据库崩溃

解决方案:

  • 高可用:系统能够在长时间运行过程中保持正常的运行状态,即系统具备持续稳定可用的能力。在高可用系统中,系统的服务能够始终对外提供服务,不会因为单点故障或异常情况而导致系统不可用
  • 限流降级:限流降级是一种在系统高负载或异常情况下,通过限制请求的访问量或降低服务质量,保证系统的稳定性和可用性的策略
  • 数据预热:系统低峰期或缓存数据过期前,提前主动加载缓存数据,使其重新生成或刷新缓存,避免大量请求同时落到数据库上

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请------点赞👍收藏⭐️评论📝


相关推荐
像风一样自由20207 分钟前
56.实战PostgreSQL-pgvector-FastAPI构建轻量级RAG
数据库·人工智能·postgresql·大模型·fastapi·智能体
User_芊芊君子1 小时前
KFS异构同步_260条链路DDL自动转换解析
数据库·ai·大模型
xiancai_xianyu1 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
Zucker n1 小时前
一款适合研究生科研工作安排的日历
linux·数据库·python
hweiyu001 小时前
Redis命令:LMOVE
redis·缓存
Sharewinfo_BJ2 小时前
Power BI沿袭视图详解:从看懂链路到做影响分析
数据库·数据分析·智信bi·上北智信
l1t2 小时前
DeepSeek总结的 DuckDB 2.0 中更简洁的变量语法
数据库·sql
bug菌2 小时前
一个周末就想把短链服务推到 10 万 QPS,真能靠加 Redis 做到吗?
java·redis·go
sunshine8853 小时前
集成电路(IC)设计与封测行业10大常用ERP系统分析
大数据·数据库·人工智能
fen_fen3 小时前
Jmeter5.1.1连接oracle数据库的错误复盘
数据库·jmeter·oracle