Redis 进行持久化的方式

2019-08-06  本文已影响0人  Hesunfly

    Redis 是一款非常流行的 Nosql 产品,和一般的 Nosql 不同的是,Reids 提供了数据的持久化功能,防止在出现意外的情况,可以进行数据备份恢复。Redis 支持的持久化方式分别为 Snapshotting ( 快照方式 bgsave ) 和 Append-only file ( 追加持久化 aof )。

Snapshotting 持久化方式

该方式是 Redis 默认开启的持久化方式,一次性把 Redis 中全部的数据存储在硬盘中,不过该方式会耗费大量的时间和服务器资源,尤其是数据量过大的时候。

1. 开启和关闭的方式

在 Redis 的配置文件中,找到下面几行配置项

save 900 1   #900秒内超过1个key被修改则发起快照保存
save 300 10  #300秒内超过10个key被修改则发起快照保存 
save 60 10000  #60秒内超过10000个key被修改则发起快照保存 

屏蔽上面的触发条件即可关闭快照方式。

2. 设置保存位置和快照文件名

备份的默认文件名为 dump.rdb,我们可以修改配置文件来改变默认文件名:

#修改 dbfilename 配置项的值即可改变快照文件名
dbfilename dump.rdb        eg:dbfilename redis_bgsave.rdb
 #修改 dir 配置项的值即可修改快照文件保存的路径
dir /var/lib/redis                  eg:dir ./
3. 手动进行快照

登录状态下直接执行 bgsave 命令即可:

127.0.0.1:6379> bgsave
Background saving started

未登录状态下执行:

$ redis-cli bgsave
Background saving started

Append-only file 持久化方式

Aof 模式的原理是将添加、修改和删除的的命令备份到文件中,恢复时执行该命令即可。

1. 开启和关闭方式

打开 Redis 的配置文件

#将 appendonly 的值改为yes即可
appendonly yes
#存储的文件名,默认为appendonly.aof
appendfilename "appendonly.aof"

如果 Bgsave 和 Aof 都开启,则以 Aof 为准。

2. 触条条件

触发条件需要在 Redis 配置文件中进行修改

#always方式是将每个数据变动的命令都存入磁盘中,速度比较慢,但是可以保证完全的持久化。
appendfsync always
#everysec方式是每秒进行磁盘写入,对于性能和持久化方面有很好的折中,这也是redis默认开启的触发条件
appendfsync everysec
#no方式依赖与操作系统,性能最好,但是对于持久化没有保证
appendfsync no

    两种方式的各有优缺点,选择哪一种则需要根据自己的业务场景进行选择。不过幸运的是 Redis 4.0 版本后,有了混合持久化的功能,将 Bgsave 的全量和 Aof 的增量做了融合处理,这样既保证了恢复的效率又兼顾了数据的安全性,这样我们就能更好使用 Redis 了。

文章同步发布在我的个人博客中,传送门Hesunfly Blog

上一篇 下一篇

猜你喜欢

热点阅读