配置Redis持久化,我也是从官网地址: 参考配置并且分享给各位,废话不多说,直接配置吧
-------------------------------------------------分割线-----------------------------------------------------
根据官网介绍,Redis持久化,有两种形式,一种是RDB,另外一种是AOF,默认情况下RDB持久化是开启的,那我们分别来介绍两种持久化的差异跟优缺点吧
- RDB持久化
- 什么是RDB?
- 持久性以指定的时间间隔执行数据集的时间点快照
- RDB的优点
- 因为是定时备份,可以设置24小时内,RDB文件归档一次,保存30天,这样出现问题,你可以随意恢复当时的数据
- 因为是定时备份,所以主线程不需要去做持久化的操作,子线程做备份操作就行
- RDB数据量比AOF更小,所以能更快速的启动
- RDB的缺点
- 如果Redis突然停机,可能会导致某个时间点最新的的数据丢失
- 为了使用子进程在磁盘上保留RDB,RDB需要经常fork()。如果数据集很大,Fork()会很费时,并且可能导致Redis在几毫秒内停止服务,或者如果数据集非常大并且CPU性能不佳,甚至会持续一秒。
介绍过,RDB后,我们来说说RDB的具体操作吧
- 默认情况下,RDB是开启的,可以查看redis.conf文件,可以看到如下内容
- 上述: save v1 v2, v2个key有变化,则v1秒候持久化一次
- 然后我们可以看到 redis目录下会有一个dump.rdb文件,那就是RDB持久化后的文件
- 如果我们kill掉redis进程,然后重启,可能会丢失最新写入的数据,重启候,会自动把dump.rdb的文件读入Redis当中
- 定时持久化的策略可以自己设定, save 60 100 表示,如果有100个key有变化,则60秒后进行持久化
需要注意一点的是,如果长时间没有进行RDB持久化的话,当你触发了修改多少个key后,多少时间候进行持久化,不会等多少时间,而是会马上持久化一次,除非,在上一次持久化的时间间隔内,有这么多key修改过,才会进行间隔时间持久化,篇幅有限,读者可以自己测试
- AOF持久化
- 什么是AOF?
- 持久性会记录服务器接收到的每个写入操作,这些操作将在服务器启动时再次写入,重建原始数据集
- AOF的优点
- AOF数据更全面,因为是追加每次写入操作,就算服务突然停止,也只会丢1S的数据
- 当Redis数据很大的时候,AOF能够自动重写到一个新的文件内
- RDB的缺点
- AOF文件通常比相同数据集的等效RDB文件大
- AOF启动恢复数据,会比RDB慢。
介绍过,AOF后,我们来说说AOF的具体操作吧
- 默认情况下,AOF是不开启的,所以,需要我们手动开启 将 appendonly no 改成 appendonly yes
- 然后重启redis,添加k v,在redis根目录下 就会发现 appendonly.aof 文件,就算添加了key,杀掉进程,也能恢复最新的数据
- 如果我们只想要RDB的持久化,那么修改redis.conf文件的appenonly 为no就可以了
- 如果我们只想要AOF的持久化,那么修改redis.conf文件的 save 后面变为空就可以了
- 如果我们是要切换持久化方式,以前是RDB,想切换成AOF方式,那么我们需要这么做
- 备份最新的dump.rdb文件,转移到安全的地方
- 进入 redis-cli 执行如下命令
- config set appendonly yes
- config set save ""
- 这样,我们就可以完成,在不重启的情况下,完成RDB->AOF持久化方式的切换
- 如果我们一开始持久化的方式是AOF,要切换成RDB,我们这么操作
- 进入 redis-cli 执行如下命令
- config set appendonly no
- config set save second chang
- 等RDB持久化后,在 redis-cli 执行
- config set appendonly no
- 这样,我们就可以完成,在不重启的情况下,完成AOF->RDB持久化的方式
下篇我们介绍 Redis(五)Redis主从自动切换
到这,文章就结束了!
以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正
欢迎转载,请注明出处跟作者,谢谢!