redis是一个基于内存的数据库,如果没有持久化的话,那么一旦服务器重启或者断电,之前的数据都会丢失(RAM)
redis的持久化有两种方式:
一种是RDB(Redis Database),另一种是AOF(Append Only File)
RDB
是将内存中的数据快照写入快照,它是某一个时间点上数据的完整副本
使用配置文件来自动触发快照。
可以通过配置文件中的save参数来配置
第一行表示3600秒也就是一个小时之内,只要有一次修改就进行一次快照。
第二行就表示300秒内有100次修改的话才进行一次快照
第三条表示60秒内有10000次修改的话才进行一次快照
可以根据自己服务器的负载情况来调整这个配置
除了使用配置文件来自动触发快照,还可以使用save命令来手工触发快照
这个dump.rdb就是生成的快照文件。
这里的xxd是一个可以查看二进制或十六进制文件内容的Linux命令,可以看到rdb文件中的内容
快照文件有个缺点就是如果服务器在快照之后宕机了,那么最后一次快照之后的所有修改内容都会丢失掉,所以RDB更适合用来做备份。
比如我们可以在每天凌晨的时候,通过crontab来执行一次save命令,然后将快照文件备份到其他地方,这样就可以保证数据的安全了。
还有一个问题就是由于生产环境中,我们位Redis开辟的内存区域一般都比较大,那么内存中的数据同步到硬盘这个过程就会持续比较长的时间。这段时间内Redis都是处于一个阻塞的状态,不能接受任何的请求,这样显然是不行的。于是redis提供了一个叫做bgsave的命令。这个命令会单独创建一个子进程来负责将内存中的数据写入到硬盘中,这样主进程就可以继续处理请求了。但是这个过程中有一定的性能损耗。因为fork一个子进程也是需要时间的。这段时间内Redis还是不能处理任何请求,没有办法做到秒级的快照。
为了解决这个问题,redis又提供了另一种叫做AOF的持久化方式。
AOF
是append only file,意思就是追加文件的意思。它的原理是在执行写命令的时候,不仅会将命令写入到内存中,还会将命令写入到一个追加的文件中。这个文件就是AOF文件。它会以日志的形式来记录每一个写操作。
当redis重启的时候,就会通过重新执行AOF文件中的命令,来在内存中重建整个数据库内容
开启AOF的方式很简单
改成yes就可以。
标签:文件,持久,AOF,redis,命令,内存,快照 From: https://blog.csdn.net/weixin_74923758/article/details/137359904