Redis常用API和持久化机制
2021-01-21 10:15
RDB持久化文件触发机制
shutdown时,如果没有开启aof,会触发
配置文件中默认的快照配置
执行命令save或者bgsave save是只管保存,其他不管,全部阻塞;bgsave:redis会在后台异步进行快照操作,同时可以响应客户端的请求
执行flushall命令 但是里面是空的,无意义
AOF持久化文件触发机制(依据配置项决定)
no:表示等操作系统进行数据缓存同步到磁盘(快,持久化没保证)
always:同步持久化,每次发生数据变更时,立即记录到磁盘(慢,安全)
everysec:表示每秒同步一次(默认值,很快,但可能会丢失一秒以内的数据)
SAVE命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。
一般来说,在生产环境很少执行SAVE操作,因为它会阻塞所有客户端,保存数据库的任务通常由BGSAVE命令异步地执行。
然而如果负责保存数据的后台子进程不幸出现问题时,SAVE可以作为保存数据的最后手段来使用。
BGSAVE命令执行之后立即返回OK,然后Redis fork出一个新子进程,原来的Redis进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
客户端可以通过LASTSAVE命令查看相关信息,判断BGSAVE命令是否执行成功。
执行一个AOF文件重写操作。重写会创建一个当前AOF文件的体积优化版本。
即使BGREWRITEAOF执行失败,也不会有任何数据丢失,因为旧的AOF文件在BGREWRITEAOF成功之前不会被修改。
重写操作只会在没有其他持久化工作在后台执行时被触发,也就是说:
如果 Redis 的子进程正在执行快照的保存工作,那么AOF重写的操作会被预定(scheduled),等到保存工作完成之后再执行AOF重写。
在这种情况下,BGREWRITEAOF的返回值仍然是OK,但还会加上一条额外的信息,说明BGREWRITEAOF要等到保存操作完成之后才能执行。
在Redis 2.6或以上的版本,可以使用INFO [section]命令查看 BGREWRITEAOF是否被预定。
如果已经有别的AOF文件重写在执行,那么BGREWRITEAOF返回一个错误,并且这个新的BGREWRITEAOF请求也不会被预定到下次执行。
从 Redis 2.4 开始, AOF重写由Redis自行触发,BGREWRITEAOF仅仅用于手动触发重写操作。
上一篇:在Win10中安装VC6