工业网站建设,西安晨曦e动网站建设,可以自己做安卓app的网站,高端网站开发平台Redis数据持久化
redis一共提供了两种数据持久化的方式RDB和AOF。
RDB
RDB全称为Redis Database Backup file#xff08;数据备份文件#xff09;#xff0c;也被叫做Redis数据快照。简单来说就是将内存中的全部数据都记录到磁盘中#xff0c;当redis发生宕机或是一些…Redis数据持久化
redis一共提供了两种数据持久化的方式RDB和AOF。
RDB
RDB全称为Redis Database Backup file数据备份文件也被叫做Redis数据快照。简单来说就是将内存中的全部数据都记录到磁盘中当redis发生宕机或是一些故障导致实例故障重启此时就会从磁盘中读取快照文件恢复数据。
快照持久化是 Redis 默认采用的持久化方式在 redis.conf 配置文件中默认有此下配置 Redis内部有触发RDB的机制可以在redis.conf文件中找到格式如下
save 900 1 #在900秒(15分钟)之后如果至少有1个key发生变化Redis就会自动触发bgsave命令创建快照。
save 300 10 #在300秒(5分钟)之后如果至少有10个key发生变化Redis就会自动触发bgsave命令创建快照。
save 60 10000 #在60秒(1分钟)之后如果至少有10000个key发生变化Redis就会自动触发bgsave命令创建快照。RDB的执行原理
bgsave会fork主进程得到子进程主要复制的是主线程中的页表记录着虚拟地址与物理地址的映射关系子进程共享主进程的内存数据完成fork后读取内存数据并写入RDB文件。
其中fork采用的是copy on write技术
当主进程执行读操作时访问共享内存当主进程执行写操作时则会 拷贝一份数据进行写操作。
AOF
AOF全称为Append Only File追加文件。Redis处理的每一个写命令都会记录在AOF文件可以看做是命令日志文件。
aof默认是关闭的需要更改redis.conf文件来进行配置。
aof记录频率也可以通过redis.conf进行配置。 配置项刷盘时机优点缺点Always同步刷盘可靠性高几乎不丢数据性能影响大everysec每秒刷盘性能适中最多丢失1秒数据no操作系统控制性能最好可靠性较差可能丢失大量数据
因为aof是记录命令。aop文件要比rdb大的多而且aof会对记录中的一个key进行多测更改操作但是只有最后一次的更改才有意义。可以通过bgrewriteaof命令对aof文件进行重写使其用最少的命令达到最优的效果。 Redis也可以在redis.conf中进行自动配置当aop中的据在某段时间达到某个阈值就会自动进行重写。
RDB和AOf对比
他们在实际应用中各有其优缺点在Redis6.0之后两个配合使用。
RDBAOF持久化方式定时对整个内存进行快照记录每一次的执行命令数据完整性不完整在定时快照期间数据会丢失相对完整取决于刷盘策略文件大小会有压缩文件相对较小记录命令所以文件很大宕机恢复速度快慢数据恢复优先级低因为完整度不比AOF高完整度高系统资源占用高其中fork等操作对内存和CPU会有一定的消耗低主要是硬盘的io操作进行命令重写时会占用CPU资源使用场景可以容忍数分钟的数据丢失情况偏向于高可用性对数据安全性要求较高的情况对数据一致性要求高
总结
RDB和AOF两种数据持久化操作的区别有哪些
rdb时一个快照文件它是将redis的数据都存储在硬盘中当redis故障宕机后方便从快照文件中恢复数据。
aof时一个追加文件类似于一个日志文件他是用来记录对数据的写命令操作当redis宕机时会重修执行一遍这个文件从而恢复数据。
这两种持久化操作哪个的恢复速度比较快呢
引文RDB是一个二进制文件在保存的时候体积比较小所以他若是用它进行数据恢复数据恢复速度很快但是他数据的完整性不高在快照期间会数据丢失。AOF虽然恢复的速度相较于RDB慢但是由于它可以配置刷盘策略从而他的数据完整性较高。