介绍一下redis中底层磁盘及IO模型,数据持久化机制,哨兵机制

底层磁盘及IO模型: Redis中的数据存储在内存中,但为了保证数据的持久化,Redis还提供了两种数据持久化方式:RDB(Redis DataBase)和AOF(Append-Only File)。

  1. RDB:RDB是一种快照的方式,可以手动或自动将数据以二进制的形式保存到硬盘上。当发生持久化时,Redis会fork一个子进程,将内存中的数据写入到临时文件中,然后替换原来的RDB文件。RDB文件存储的是所有数据的快照,可以通过加载RDB文件来恢复数据。

  2. AOF:AOF是一种日志的方式,会将每个写操作追加到一个文件的末尾,以此来记录所有的写操作。当需要恢复数据时,只需重新执行文件中的写操作即可。AOF文件存储的是所有的写操作,可以通过重放AOF文件中的写操作来恢复数据。

Redis的IO模型采用了多路复用技术,主要通过select、poll、epoll函数来实现。当Redis有多个客户端连接时,采用非阻塞IO的方式处理客户端请求,避免了线程创建、销毁的开销,提高了IO的效率。

数据持久化机制: Redis提供了两种数据持久化方式:RDB和AOF。

  1. RDB:RDB是一种快照的方式,可以手动或自动将数据以二进制的形式保存到硬盘上。RDB文件存储的是所有数据的快照,可以通过加载RDB文件来恢复数据。RDB方式适用于备份数据、恢复数据等场景,但可能存在数据丢失的风险。

  2. AOF:AOF是一种日志的方式,会将每个写操作追加到一个文件的末尾,以此来记录所有的写操作。当需要恢复数据时,只需重新执行文件中的写操作即可。AOF方式适用于数据持久化和数据恢复,比RDB方式更安全,但可能导致文件体积较大。

哨兵机制: Redis的哨兵机制用于监控和管理Redis的高可用性。哨兵是一个独立的进程,可以监控多个Redis实例,并在主节点出现故障时自动进行故障转移。

哨兵的工作流程如下:

  1. 哨兵定期向Redis实例发送PING命令,检查实例是否正常工作。
  2. 当哨兵发现主节点不可达时,会进行故障转移。
  3. 哨兵会选出一个从节点作为新的主节点,并将其他从节点切换到新的主节点。
  4. 当主节点重新可用时,哨兵会将其设置为新的从节点,以进行故障恢复。

哨兵机制可以提供Redis的高可用性和故障恢复能力,但仍有可能因为哨兵本身出现故障而导致系统不可用。为了提高可靠性,可以使用多个哨兵节点以提供容错和冗余。

相关推荐
A_cot6 小时前
Redis 的三个并发问题及解决方案(面试题)
java·开发语言·数据库·redis·mybatis
芊言芊语8 小时前
分布式缓存服务Redis版解析与配置方式
redis·分布式·缓存
攻城狮的梦9 小时前
redis集群模式连接
数据库·redis·缓存
Amagi.12 小时前
Redis的内存淘汰策略
数据库·redis·mybatis
无休居士13 小时前
【实践】应用访问Redis突然超时怎么处理?
数据库·redis·缓存
.Net Core 爱好者13 小时前
Redis实践之缓存:设置缓存过期策略
java·redis·缓存·c#·.net
码爸16 小时前
flink 批量压缩redis集群 sink
大数据·redis·flink
微刻时光17 小时前
Redis集群知识及实战
数据库·redis·笔记·学习·程序人生·缓存
丁总学Java18 小时前
如何使用 maxwell 同步到 redis?
数据库·redis·缓存
蘑菇蘑菇不会开花~18 小时前
分布式Redis(14)哈希槽
redis·分布式·哈希算法