Redis虽然是一种内存型数据库
,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。
我们一共提供了以下几种方式进行持久化:
RDB:以快照的形式,将redis中的数据保存成一个
经过压缩二进制文件
。它可以手动执行(save/bgsave命令),也可以再redis.conf中配置(save 60 1000行),定期执行。
了解即可(只要记住,bgsave不阻塞,save阻塞命令。我们多用bgsave即可)
AOF 持久化,将修改的每一条指令记录进文件appendonly.aof中(先写入os cache,每隔一段时间
fsync到磁盘)。在AOF持久化的文件中,数据库会记录下所有变更数据库状态的命令(记录每一条修改redis数据的相关指令
),除了指定数据库的select命令,其他的命令都是来自client的,这些命令会以追加(append)
的形式保存到文件中。
我们为了结合两个持久化的优点(AOF数据安全性高和RDB小并且快的优点)。redis4.0之后引入了混合持久化的方式
其实这都比较简单,相信做技术的各位大佬一看就懂了。搞几张大佬的图片看一下
注:当我们使用一主多从的时候,可能会造成复制风暴【复制风暴就是:主节点向多个从节点写数据的情况】那这个时候我就引入了如下结构
哨兵架构,是为了防止我们的主节点或者其他节点挂掉的时候,我们能监听到。
tinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。
哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过
sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且将新的redis
主节点通知给client端(这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息)
重新推崇一个主节点的形式
纸上得来终觉浅 绝知此事要躬行
上一篇:【Linux】期末复习
下一篇:AI绘画绘图流量主小程序开发