Redis - 数据持久化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kikajack/article/details/84196819

redis 支持两种数据持久化的方式:

  • 快照持久化 snap shotting:对全量数据进行备份,默认开启
  • AOF 持久化:对增量数据进行备份,默认关闭

快照持久化

redis 默认开启快照持久化。

持久化频率参数配置

在 redis 的配置文件中,默认的持久化参数是:

save 900 1
save 300 10
save 60 10000

上面参数表示:

  • 900 秒内至少改变了一个 key,则在第900秒时执行一次快照持久化
  • 300 秒内至少改变了十个 key,则在第300秒时执行一次快照持久化
  • 60 秒内至少改变了 10000 个 key,则在第60秒时执行一次快照持久化

每次持久化之后,重新开始计时。如果在计时的 60 秒内改变的 key 的个数小于 10000 个,则不执行快照持久化,等到第 300 秒时再判断。如果到了 300 秒时,更新的 key 大于 10 个则执行快照持久化,否则等到第 900 秒再判断。如果到第900 秒时,没有更新任何 key 时不执行快照持久化,更新了至少一个 key 则执行。

持久化文件位置

默认情况下,/etc/redis.conf 配置文件中的 dir 配置的目录,同时用于快照持久化和 AOF 持久化所创建的文件。dbfilename 则是快照持久化对应的文件名:

# The filename where to dump the DB
dbfilename dump.rdb

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis

手动执行快照持久化

可以通过 bgsave 命令强制执行快照持久化:

# redis-cli bgsave
Background saving started

AOF 持久化

redis 默认关闭 AOF 持久化,需要编辑配置文件后,重启 redis 并在启动时指定配置文件。注意:打开 AOF 会清空 redis,所以最好在项目开始前就决定好是否开启。

AOF 通常有更高的备份频率,数据安全性更高,当然对服务器的压力也随之增加。

appendonly no # 这里改为 yes 后,重启 redis 并指定配置文件,则开启 AOF

appendfilename "appendonly.aof" # AOF 的文件名

# 下面 3 中备份频率,用默认的每秒备份一次即可
# appendfsync always # 每条写指令备份一次
appendfsync everysec # 每秒备份一次
# appendfsync no # 根据服务器负载情况自动判断备份时机

压缩 AOF 持久化文件

AOF 持久化会记录所有的写指令,文件有很大的压缩空间。例如用户的多个 incr 指令可以用一条 set 指令代替。redis 为我们提供了优化压缩 AOF 文件的指令:

redis-cli BGREWRITEAOF

执行一个 AOF文件 重写操作。重写会创建一个当前 AOF 文件的体积优化版本。

扫描二维码关注公众号,回复: 4128279 查看本文章

猜你喜欢

转载自blog.csdn.net/kikajack/article/details/84196819