介绍一下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的高可用性和故障恢复能力,但仍有可能因为哨兵本身出现故障而导致系统不可用。为了提高可靠性,可以使用多个哨兵节点以提供容错和冗余。

相关推荐
酷ku的森7 小时前
Redis中的Zset数据类型
数据库·redis·缓存
Heliotrope_Sun15 小时前
Redis
数据库·redis·缓存
boonya17 小时前
Redis核心原理与面试问题解析
数据库·redis·面试
上官浩仁18 小时前
springboot redisson 缓存入门与实战
spring boot·redis·缓存
没有bug.的程序员18 小时前
Redis Stream:轻量级消息队列深度解析
java·数据库·chrome·redis·消息队列
AAA修煤气灶刘哥20 小时前
缓存这「加速神器」从入门到填坑,看完再也不被产品怼慢
java·redis·spring cloud
小马爱打代码21 小时前
面试题:Redis要点总结(进阶)
redis
络721 小时前
Redis 非缓存核心场景及实例说明
数据库·redis·缓存
ClouGence1 天前
Redis 双向同步如何避免循环?【附实操演示】
redis
爬山算法1 天前
Redis(50) Redis哨兵如何与客户端进行交互?
数据库·redis·交互