redis持久化

一.RDF

redis默认是RDF的持久化策略

# The filename where to dump the DB
dbfilename dump.rdb
# 900s内有一条数据修改即触发保存
save 900 1
save 300 5
save 10 10

可以关闭,将这几个注释掉就好,再加一个save “”:

save ""
# save 900 1
# save 300 5
# save 10 10

之后就不能自动保存数据了,可以用save命令手动保存数据:
redis持久化_第1张图片
可以用save或者besave:

  • save 直接调用 rdbSave方法 ,阻塞 Redis 主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。
  • bgsave 则 fork 出一个子进程,子进程负责调用 rdbSave ,并在保存完成之后向主进程发送信号,通知保存已完成。因为 rdbSave 在子进程被调用,所以 Redis 服务器在 bgsave 执行期间仍然可以继续处理客户端的请求。
  • save 是同步操作,bgsave 是异步操作。

shutdown:它会在关闭前将数据保存下来,前提是RDF要开启

二.AOF

需要设置的属性有:

appendonly、appendfsync 、appendfilename 

找到 appendonly 并将 no 改为 yes

appendfsync always  # 每次有数据修改发生时都会写入AOF文件(安全但是费时)。
appendfsync everysec  # 每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no  # 从不同步。高效但是数据不会被持久化。

AOF记录文件的默认名字:

# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"

你可以用默认名字,也可以自己指定
appendonly.aof会将你的修改以日志的形式保存在该文件中,无论是添加set或者del删除等操作都会保存数据

三.怎样从RDB方式切换为AOF方式

在 Redis 2.2 或以上版本,可以在不重启的情况下,从 RDB 切换到 AOF :

redis-cli config set appendonly yes
redis-cli config set save "" //如果你愿意的话, 也可以同时使用 RDB 和 AOF 这两种持久化功能。

以上方式并不能持久化,别忘了在 redis.windows.conf 中打开 AOF 功能!否则服务器重启后,之前通过 CONFIG SET 命令设置的配置就会被遗忘, 程序会按原来的配置来启动服务器。

四.备份场景两者的区别

RDF:
因为shutdown和flushall都会触发RDF快照,所以你flushall了之后,再次重启redis,发现数据就没了,所以你需要定期备份rdf文件,注意rdf文件不能和服务在同一个服务器,保证数据安全
AOF:
flushall这种操作也会以命令的形式被写入到aof文件中,我们把这行命令删除了然后重启redis就行了

你可能感兴趣的:(redis)