redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件)。
RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。(推荐学习:Redis视频教程)
AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。
RDB持久化和AOF持久化的区别:
1、存储数据
RDB持久化保存键空间的所有键值对(包括过期字典中的数据),并以二进制形式保存,符合rdb文件规范,根据不同数据类型会有不同处理。
AOF持久化保存redis服务器所执行的所有写命令来记录数据库状态,在写入之前命令存储在aof_buf缓冲区。
2、持久化时间选择
RDB持久化通过conf的save选项设置持久化行为(单位时间内的修改次数)。
AOF持久化通过conf的appendfsync选项设置持久化行为(单位时间内的修改次数)。
3、数据还原
RDB持久化:服务器载入rdb文件,阻塞线程,在载入完成之前不接受任何命令。
AOF持久化:服务器创建不带网络连接的伪客户端,读取aof文件中的所有命令并执行(redis服务开启aof持久化在服务器启动时会选择aof文件恢复数据库状态)
4、过期键
RDB持久化在写入或读取时会忽略过期键
AOF持久化不会忽略过期键,在键被惰性删除或定期删除时向aof文件追加一条删除命令
5、文件大小
RDB持久化随着存储数据量的变化而变化(根据不同数据类型有不同的数据压缩优化)
AOF持久化随着执行命令的增加而增加(通过aof重写进行优化)
更多redis相关技术知识,请访问Redis使用入门教程栏目学习!
以上是redis两种持久化方式的区别是什么的详细内容。更多信息请关注PHP中文网其他相关文章!