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

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: Redis数据库 | 发布订阅、主从复制、哨兵模式、缓存雪崩


Redis发布订阅

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

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

Redis主从复制

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

  • 数据备份和容灾:通过主从复制,可以将主节点的数据复制到一个或多个从节点上,从而实现数据的备份和容灾。当主节点发生故障或数据丢失时,可以快速切换到从节点,保证数据的可用性和持久性
  • 负载均衡:通过将读操作分摊到多个从节点上,可以减轻主节点的负载压力。主节点专注于处理写操作,而从节点处理读操作,提高系统的整体性能和吞吐量
  • 高可用性:主从复制可以提高系统的可用性。当主节点发生故障时,可以快速切换到从节点,实现自动故障转移,减少服务中断时间,提高系统的稳定性和可靠性
  • 数据分析和报表生成:通过将读操作分摊到从节点上,可以用于数据分析和报表生成。由于主节点专注于处理写操作,从节点可以用于查询和分析数据,提供实时的数据分析和报表生成功能
  • 高并发读取:通过将读操作分摊到多个从节点上,可以提高系统的并发读取能力。多个从节点可以同时处理读请求,提高系统的并发处理能力,减少读取的响应时间

哨兵模式

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

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

单哨兵模式

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

多哨兵模式

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

Redis缓存穿透与雪崩

缓存穿透

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

布隆过滤器

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

缓存空对象

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

缓存雪崩

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

解决方案:

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

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


相关实践学习
基于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
目录
相关文章
|
22天前
|
缓存 NoSQL Java
Redis 缓存与数据库数据不一致问题
Redis 缓存与数据库数据不一致问题
49 3
|
5天前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
7天前
|
监控 NoSQL 算法
深入理解Redis哨兵模式原理
该文章讨论了Redis Sentinel模式的原理及其在Redis高可用性中的角色。
深入理解Redis哨兵模式原理
|
7天前
|
消息中间件 存储 缓存
深入理解Redis集群主从复制原理
该文章主要探讨了Redis集群中的主从复制原理,包括为何需要主从复制、配置方法、复制流程以及一些高级特性。
深入理解Redis集群主从复制原理
|
18天前
|
缓存 NoSQL 关系型数据库
(八)漫谈分布式之缓存篇:唠唠老生常谈的MySQL与Redis数据一致性问题!
本文来聊一个跟实际工作挂钩的老生常谈的问题:分布式系统中的缓存一致性。
69 10
|
20天前
|
缓存 NoSQL Serverless
函数计算产品使用问题之如何使用Redis作为缓存插件
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
22天前
|
存储 缓存 NoSQL
Redis 缓存常见问题
Redis 缓存常见问题
31 3
|
4天前
|
存储 缓存 NoSQL
基于SpringBoot+Redis解决缓存与数据库一致性、缓存穿透、缓存雪崩、缓存击穿问题
这篇文章讨论了在使用SpringBoot和Redis时如何解决缓存与数据库一致性问题、缓存穿透、缓存雪崩和缓存击穿问题,并提供了相应的解决策略和示例代码。
15 0
|
4天前
|
缓存 NoSQL Ubuntu
如何在 Ubuntu 14.04 上配置 Redis 缓存以加速 WordPress
如何在 Ubuntu 14.04 上配置 Redis 缓存以加速 WordPress
10 0