Linux下,Redis(四)Redis数据持久化

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

 配置Redis持久化,我也是从官网地址:https://redis.io/topics/persistence 参考配置并且分享给各位,废话不多说,直接配置吧

 

 

-------------------------------------------------分割线-----------------------------------------------------

 

 

根据官网介绍,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文件,可以看到如下内容Linux下,Redis(四)Redis数据持久化_第1张图片
  • 上述: save v1 v2, v2个key有变化,则v1秒候持久化一次
  • 然后我们可以看到 redis目录下会有一个dump.rdb文件,那就是RDB持久化后的文件171547_vuxY_2278977.png
  • 如果我们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是不开启的,所以,需要我们手动开启Linux下,Redis(四)Redis数据持久化_第2张图片                              将 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主从自动切换

 

 

到这,文章就结束了!

以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正

欢迎转载,请注明出处跟作者,谢谢!

转载于:https://my.oschina.net/u/2278977/blog/1823950

你可能感兴趣的:(Linux下,Redis(四)Redis数据持久化)