Login
网站首页 > 文章中心 > 其它

Redis的持久化选项_Redis持久化配置

作者:小编 更新时间:2023-10-12 18:43:31 浏览量:175人看过

Redis提供了两种不同的持久化方法来将数据存储到硬盘里面.一种方法叫快照(snapshotting),它可以将存在于某一时刻的所有数据都写入硬盘里面.另一种方法叫只追加文件(append-only file,AOF),它会在执行写命令的时候,将被执行的写命令复制到硬盘里面.这两种持久化方法既可以同时使用,也可以单独使用,具体要看我们的数据和应用来决定.

在Redis的配置文件中有两组不同的配置选项控制着Redis将数据写入硬盘的方式.下图展示了这些配置和示例配置值.

Redis的持久化选项_Redis持久化配置

第一组配置基本的快照选项,像是存储的快照文件名,自动存储快照的频率,是否压缩快照,以及是否在创建失败时继续接受写入操作.

第二组配置AOF持久化,告诉Redis是否启用AOF持久化,将写入内容同步到硬盘的频率,在AOF压缩时能否执行同步操作.

dir ./表名了快照文件和AOF文件共同的存放路径.

①快照持久化

Redis可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本.在创建快照之后,用户可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本,还可以将快照留在原地以便重启服务器时恢复数据.

根据配置快照将被写入dbfilename选项指定的文件里面,并存储在dir选项指定的路径上面.如果在新的快照文件创建完毕之前,Redis、系统或者硬盘这三者之一任意一个崩溃了,那么Redis将丢失最近一次创建快照之后写入的所有数据.

创建快照文件有以下几种办法:

如果一个Redis服务器连接到另一个Redis服务器,并且发起SYNC命令开启主从同步,并且主服务器不是正在执行BGSAVE操作或者不是刚刚执行完BGSAVE操作,那么主Redis将会启动一个BGSAVE操作.

如果只使用快照保存数据,如果发生崩溃,你将会丢失自上次快照以来所有的数据改变.如果我们能够妥善的处理快照持久化可能会带来的大量数据丢失,那么快照持久化是一个不错的选择,如果这种类型的丢失数据是不可接受的,那么我们可以使用AOF持久化来将内存里的数据尽快的保存到硬盘上.

简单来说,AOF持久化会将被执行的写命令写到AOF文件的末尾,以此来记录数据发生的变化.所以呢,Redis只要从头到尾执行一次AOF文件包含的所有写命令,就可以恢复AOF文件所记录的数据集.AOF持久化通过设置 appendonly yes 配置选项来打开,而appendfsync配置选项则可以设置AOF文件的同步频率.

每次写命令都会导致redis将操作写入硬盘.这将导致Redis性能大幅下降

如果我们使用appendfsync always的话,那么每个写命令都会被写入硬盘,从而将发生系统崩溃时出现的数据丢失减到最少.不过遗憾的是,因为这种同步策略需要对硬盘进行大量的写入,所以Redis的处理命令的速度回收到硬盘性能的影响.

如果我们使用appendfsync everysec的话,Redis会以每秒一次的频率对AOF文件进行同步.Redis每秒同步一次AOF文件时的性能和不使用任何持久化机制时的性能相差无几,而且出现系统崩溃时我们最多也只会丢失1秒钟写入的数据.当硬盘忙于执行写入操作的时候,Redis还会放慢自己的速度以适应硬盘的最大写入速度.

最后如果使用appendfsync no选项,这个选项不会对Redis的性能造成影响,但是当系统崩溃的时候将丢失不定量的数据,所以一般来说不推荐使用这种机制.

Append-only files很灵活,提供各种选项确保几乎所有级别问题可以处理.但是AOF也有不利的一面,那就是文件容量.因为Redis会不断地将写命令记录到AOF文件里面,所以随着Redis的不断运行,AOF文件的体积也会不断增长,另一方面,因为Redis在重启之后需要通过重新执行AOF文件记录的所有写命令来还原数据,如果AOF文件的体积非常大,那么还原操作的执行时间可能会非常长.

想解决AOF容量占用越来越高的问题,我们可以向Redis发送BGREWRITEAOF命令,这会通过移除AOF文件中的冗余命令来重写AOF文件,使AOF文件的体积变得尽可能的小.?BGREWRITEAOF工作方式非常类似于快照BGSAVE: 执行一个子进程,然后在子进程执行重写AOF文件.所以呢,快照持久化因为创建子进程而导致的性能问题和内存占用问题,在AOF持久化中也同样存在.更糟糕的是,因为AOF文件的体积可能比快照文件的体积大好几倍,当时AOF重写时,删除一个非常大的AOF文件可能导致系统挂起好几秒.

最后,无论是使用AOF持久化还是快照持久化,将Redis数据保存到硬盘上都是很有必要的.当我们同时开启AOF持久化和快照持久化的时候,Redis将使用AOF文件来恢复数据.

参考:?

转载请注明出处.

以上就是土嘎嘎小编为大家整理的Redis的持久化选项相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章