本笔记主要记录redis持久化命令。

 

1.save

可用版本: >=1.0.0

时间复杂度: O(N),N为要保存到数据库中key的数量

命令格式: save

作用:

SAVE 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。

一般来说,在生产环境很少执行 SAVE 操作,因为它会阻塞所有客户端,保存数据库的任务通常由 BGSAVE 命令异步地执行。然而,如果负责保存数据的后台子进程不幸出现问题时, SAVE 可以作为保存数据的最后手段来使用。

返回值:

保存成功返回OK。

 

2.bgsave

可用版本: >=1.0.0

时间复杂度: O(N),N为要保存到数据库中key的数量

命令格式: bgsave

作用:

在后台异步(Asynchronously)保存当前数据库的数据到磁盘。

BGSAVE 命令执行之后立即返回  ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。

客户端可以通过 LASTSAVE 命令查看相关信息,判断 BGSAVE 命令是否执行成功。

返回值:

返回反馈信息。

 

3.bgrewriteaof

可用版本: >=1.0.0

时间复杂度: O(N),N为要追加到AOF文件中的数据数量

命令格式: bgrewriteaof

作用:

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

即使BGREWRITEAOF执行失败,也不会有任何数据丢失,因为旧的AOF文件在BGREWRITEAOF成功之前不会被修改。

初始化操作只会在没有其他持久化工作在后台执行时被触发,则:

如果Redis的子进程正在执行快照的保存工作,那么AOF重写的操作会被预定(预定),等到保存工作完成之后再执行AOF转换。在这种情况下,BGREWRITEAOF的返回值仍然是OK,但还会加上一条额外的信息,说明BGREWRITEAOF要等到保存操作完成之后才能执行。在Redis的2.6或以上的版本,可以使用INFO [部分]命令查看BGREWRITEAOF是否被预定。

如果已经有别的AOF文件重写在执行,那么BGREWRITEAOF返回一个错误,并且这个新的BGREWRITEAOF请求也不会被预定到下次执行。

从Redis 2.4开始,AOF由Redis自行触发,BGREWRITEAOF仅用于手动触发重新操作。

返回值:

反馈信息。

 

4.lastsave

可用版本: >=1.0.0

时间复杂度: O(1)

命令格式: script kill

作用:

返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示。

返回值:

一个 UNIX 时间戳。

 

作者:红雨 微信公众号: 红雨python