Redis持久化的两种模式--RDB和AOF

泪湿孤枕 提交于 2020-03-20 14:20:14

3 月,跳不动了?>>>

最近呢,我使用到redis的缓存这方面的知识,所以去加深了一下学习,故有一些积累的东西,在这里给大家分享一下;顺便也当作笔记一般的存在,以免以后用到的时候,又去再次查找,难道自己记录的知识,它不香吗?


1. Redis持久化策略

1.1什么是持久化

1.1.1持久化介绍

     运行环境: redis运行环境在计算机的内存中.如果redis服务器意外宕机,或者机房意外断电等.那么内存中的数据将会全部清空.势必造成业务数据的丢失. 稳定性太差。

     而且由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件)。

1.1.2 持久化策略介绍

     持久化:可以将内存数据按照指定的规则保存到磁盘中.当redis重启时,根据配置文件中指定的持久化文件.实现数据的恢复.

保存方式:

  • 1.多久保存一次?

               1.指定周期保存 2.实时保存

  • 2.保存的是什么?

          1.保存key-value结构 2.保存用户的操作记录

  • 3.带来的额外的开销? 是否允许?

          1.可能会丢失数据. 2.持久化文件太大.不易维护.

2. RDB模式

2.1 RDB模式介绍

  • 1.RDB模式是redis中默认的持久化的策略

  • 2.RDB模式记录的是Redis的内存快照 记录速度更快

  • 3.RDB模式是定期持久化.可能会导致少量的数据丢失.

  • 4.如果用户可以允许少量的数据丢失,则首选RDB模式.因为RDB模式工作的效率最高.

2.2 RDB模式命令

  • 1.save指令 将内存数据马上持久化到硬盘中. 该操作是阻塞的. 持久化操作优先.

  • 2.bgsave指令 后台执行持久化操作. 不能保证立即马上持久化. 当服务器空闲时,会进行持久化操作.(内存不忙) 不会陷入阻塞.

  • 3.RDB模式可以实现自动的持久化.

2.3 RDB模式的持久化策略

在redis的配置文件redis.conf中搜索save--:/save,我们将看见一下信息

save 900 1      900秒内执行1次set操作.则持久化一次.

save 300 10     300秒内执行10次set操作.则持久化一次.

save 60 10000   60秒内执行10000set操作.则持久化一次.

#save 1 1        1秒内执行1set操作.则持久化一次   性能太低.

如果有特殊的需求,可以修改持久化策略.但是需要注意性能问题。

2.4 RDB模式配置

前面一列是行数,我相信大家都懂啊!

 253 dbfilename dump.rdb    可以修改持久化文件的名称

 263 dir ./                 持久化文件的位置  ./当前文件目录

3. AOF模式

3.1 AOF模式介绍

  • 1.AOF模式默认条件下是关闭的,需要手动开启.

  • 2.AOF模式可以实现数据的实时持久化.

  • 3.AOF模式,记录的是用户的操作的过程.以追加的形式添加到配置文件之后.

  • 4.AOF模式的持久化是异步操作.不会影响用户的使用.用户使用不会陷入阻塞.

  • 5.由于AOF模式记录的是用户的操作过程,所以持久化文件较大.恢复数据时间较长.

3.2AOF模式配置

开启AOF模式

699 appendonly yes

703 appendfilename "appendonly.aof"     持久化文件名称

3.3AOF和RDB模式同时配置问题

如果RDB模式和AOF模式同时存在,以AOF模式为主. 如果不想开启AOF模式需要将配置关闭.

 699 appendonly no

3.4 AOF模式持久化策略


appendfsync always   只要用户执行更新操作,就会持久化到文件中

appendfsync everysec 默认策略  表示每秒同步一次 

appendfsync no        不主动持久化.

4. AOF和RDB总结

  • 1.RDB模式持久化是同步的方式,AOF模式异步操作.

  • 2.RDB模式记录的是内存数据的快照(只保留最新数据),

          AOF模式记录的是用户的操作过程(持久化文件较大).

  • 3.RDB模式可能会丢失少量数据.AOF模式可以实现实时持久化操作.保证数据"不丢失"

  • 4.RDB模式性能更高.AOF模式运行更为稳定.但是恢复数据的时间较长,需要定期清理维护持久化文件.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!