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

相关推荐
xiaoqiMikko15 小时前
Redis 实战(二):宕机会丢多少数据 —— kill -9 与真断电下 RDB / AOF 逐个实测(6.2.4)
redis·后端
夕除17 小时前
redis--ziplist
redis
2301_322414280418 小时前
基于SSM框架的在线考试管理系统的设计与实现14750-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·redis·mysql·tomcat·maven·mybatis·ssm
我星期八休息18 小时前
Redis 的原理和使用(2)
前端·数据库·redis·python·mysql·缓存·bootstrap
imDwAaY2 天前
操作系统如何管理程序运行?从线程、进程到内存隔离与用户态切换:CS162 Note2
android·java·redis
码途行者2 天前
处理超时未支付订单:两套轻量化方案,附 PHP 极简实现
开发语言·redis·php
草莓熊Lotso2 天前
【C++ 基于微服务的即时通讯系统】etcd + brpc 从安装到服务注册发现全链路实战
网络·数据库·c++·redis·微服务·etcd
我不会起名字3222 天前
Redis 突然只能读不能写:MISCONF 报错的 3 类触发条件与 4 步恢复
运维·redis·持久化·排查·misconf
我不会起名字3222 天前
Redis 从 0 到 1(九):主库宕机 30 秒自动切主——1 主 2 从 3 哨兵 + Go 客户端
redis·docker·sentinel·高可用·哨兵
毕业设计7033 天前
(免费领源码)SSM董家湾线上点餐系统04682- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
java·redis·mysql·tomcat·maven·mybatis·ssm