千家信息网

Redis持久化中的RDB使用方法

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,Redis持久化中的RDB使用方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Redis持久化概述Redis持久化分成三种方式:R
千家信息网最后更新 2025年01月17日Redis持久化中的RDB使用方法

Redis持久化中的RDB使用方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Redis持久化概述

Redis持久化分成三种方式:RDB(Redis DataBase)、AOF(Append Only File)和AOF+RDB混合持久化

关于Redis持久化,有这么一些说法:

1:RDB是在不同的时间点,将Redis某一时刻的数据生成快照并存储到磁盘上

2:AOF是只允许追加不允许改写的文件,是将Redis执行过的所有写指令记录下来,在下次Redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了

3:混合方式是先使用RDB进行快照存储,然后使用AOF持久化记录所有的写操作

4:RDB和AOF两种方式可以同时使用,在这种情况下,如果Redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高

5:可以关闭RDB和AOF,这样的话,Redis将变成一个纯内存数据库,就像Memcache一样

6:通过配置redis.conf中的appendonly为yes就可以打开AOF功能

7:通过 aof-use-rdb-preamble 配置项可以打开混合方式

RDB方式概述

RDB方式,Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能

如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。

RDB的配置

1:save * :保存快照的频率,第一个表示多长时间,单位是秒,第二个*表示至少执行写操作的次数;在一定时间内至少执行一定数量的写操作时,就自动保存快照;可设置多个条件。

(1)如果想禁用RDB持久化的策略,只要不设置任何save指令,或者给save传入一个空字符串参数也可以

(2)如果用户开启了RDB快照功能,那么在Redis持久化数据到磁盘时如果出现失败,默认情况下,Redis会停止接受所有的写请求。这样做的好处在于可以让用户很明确的知道内存中的数据和磁盘上的数据已经存在不一致了。如果下一次RDB持久化成功,redis会自动恢复接受写请求。

2:dbfilename:数据快照文件名(只是文件名,不包括目录),默认dump.rdb

3:dir:数据快照的保存目录(这个是目录),默认是当前路径

4:stop-writes-on-bgsave-error:如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制这种不一致,那么在快照写入失败时,也能确保redis继续接受新的写请求

5:rdbcompression:对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能

6:rdbchecksum:在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能

7:rdb-del-sync-files:在没有持久性的情况下删除复制中使用的RDB文件启用。默认情况下,此选项是禁用的。

RDB优点

   适合冷备份、高性能、恢复数据快

RDB的问题

1:fork一个进程时,内存的数据也被复制了,即内存会是原来的两倍

2:每次快照持久化都是将内存数据完整写入到磁盘一次,并不是增量的只同步脏数据。如果数据量大的话,而且写操作比较多,必然会引起大量的磁盘io操作,可能会严重影响性能。

3:由于快照方式是在一定间隔时间做一次的,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改。

触发快照的情况

1:根据配置规则进行自动快照2:用户执行save或bgsave命令3:执行flushall命令4:执行复制replication时

save命令

执行Save命令时,Redis会阻塞所有客户端的请求,然后同步进行快照操作。

bgsave命令

执行bgsave命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。可以通过lastsave命令获取最后一次成功执行快照的时间。

flushall命令

这个命令会导致Redis清除内存中的所有数据,如果定义了自动快照的条件,那么无论是否满足条件,都会进行一次快照操作;如果没有定义自动快照的条件,那么不会进行快照

关于Redis持久化中的RDB使用方法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

快照 数据 方式 命令 文件 内存 磁盘 情况 时间 存储 配置 功能 性能 数据恢复 条件 问题 方法 一致 指令 用户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 游戏数据库曝光 无人驾驶5g网络安全吗 网络技术编程在线教程 南京蜂泰互联网科技花呗扣款 新区网络安全知识 关于疫情期间网络安全视频 数据库技术及应用教程第三版 停车系统软件开发报价 家明手表服务器错误 广东电商软件开发定做 南阳网络安全活动周 北京智能照明软件开发定制 数据库审计区别与联系 附加数据库代码 介休数据库修复 蜀山传奇怎么找到以前的服务器 网络安全政策文章 杭州一站式网络技术来电咨询 网吧机器显示与服务器通讯超时 网络安全教育黑板报图片高中 濮阳职业技术学院软件开发 陕西教育厅网络安全先进个人 西奥电梯怎么设置服务器 hibernate用什么数据库 车票查询系统数据库课程设计 疫情防控网络安全保障 qq群视频连接服务器失败怎么办 公交户外广告软件开发商 王者荣耀安卓服务器和苹果手机 华为什么笔记本做软件开发用
0