redis中的数据保存在内存中,如不进行持久化,则当断电或者服务器失效时,内存中的数据会丢失,redis中提供了两种持久化方式:
1rdb方式
2.aof方式
rdb方式(redis database):在redis运行时,会创建一个子线程,在一定情况下会对数据进行持久化,也就是将数据写入到一个临时文件当中,当持久化结束后,将这个临时文件替换上一次持久化的文件,子进程不会进行io操作,以确保redis的高性能,但是如果最后一次未正常替换持久化文件,则可能会持久化失败。redis以rdb方式持久化时默认保存的持久化文件为dump.rdb。
rdb持久化触发方式:
1.当redis读写数据满足配置文件中的save规则时。
save规则:
注:该文件为redis配置文件redis.conf
save 900 1 :在900秒内 存入一次数据则进行一次rdb持久化
save 300 10
save 60 10000
2 执行flushall命令也会触发一次rdb 持久化
3.退出redis进程时,也会触发rdb持久化操作,将当前产生的临时文件保存并替换rdb文件
注:rdb持久化为redis默认的持久化操作,所以每次启动redis时都会自动检查rdb文件,rdb文件保存路径可以在redis 配置文件redis.conf进行修改 ,也可通过命令查看。
redis.conf 中配置的路径:默认为dump.rdb文件
通过命令查看默认保存路径:
aof :appendonly file:一种对文件无限追加的方式进行数据持久化
当以aof的方式进行数据持久化时会将所有的命令记录下来保存到一个文件当中(appendonly.aof文件),当进行数据恢复时候将文件中的命令重新执行有一遍。
开启aof持久化的方式:将配置文件中的appendonly 设置为yes 重启redis则会启用aof持久化方式
同样在配置文件中配置了aof持久化的触发:
redis 默认为everysec :每一秒触发一次aof 持久化(默认)
always:每一次向redis中存入数据触发一次aof持久化
no :从不进行aof持久化
如果每次存储数据都会进行一次aof操作,太过频繁,对redis服务器压力比较大,因此最常用的为everysec,也就是每一秒进行一次aof 持久化,最坏的情况下会丢失一秒的数据。