Redis持久化
就是将Redis的数据从内存中保存到硬盘上。
持久化之后,会在当前目录的文件夹中生成一个dump.rdb文件,该文件中就保存你内存中的数据
1. RDB持久化是什么(【***】)
RDB(Redis DataBase) 指定频率将Redis数据持久化,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上
Redis默认就支持该方式,你什么都不用做,Redis会自动的将内存的数据存储到硬盘中,它会先将数据写入到一个临时的文件中,等待持久化过程结束,才会用这个临时文件替换上次持久化好的文件。
默认频率如下:
save 900 1 //900秒以内 ,如果至少有一个键的值发生变化, 则Redis自动持久化
save 300 10 //300秒以内 ,如果至少有10个键的值发生变化, 则Redis自动持久化
save 60 10000 //60秒以内 ,如果至少有10000个键的值发生变化, 则Redis自动持久化
可以通过修改 redis.windows.conf
来更改频率
2. AOF持久化(Redis默认不支持该方式)
AOF(Append Only File)持久化就是每次操作立即持久化 ,就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复
具有实时性(一般数据不能有任何差错的情况下,修改之后会立刻保存在磁盘里面),该机制可以带来更高的数据安全性,即数据持久性
Redis默认不支持该方式
让Redi支持AOF持久化方式方法
- 修改配置文件
redis.windows.conf
的第392: appendonly no 将no改为yes,如果有写操作(就是set等),redis就会被追加到AOF文件的末尾。
-
重启服务器
重新打开start.bat脚本文件 -
Redis会在当前的文件夹中自动生成一个文件:appendonly.aof文件 ,有 appendonly.aof文件出现就表示开启了AOF
-
默认情况下,AOF是一秒钟持久化一次
默认情况 appendfsync everysec,这种情况就算出现异常,也只是丢失1秒内的数据,如果你想要求更高,可以改为always
关键字 | 持久化时机(值) | 描述 |
---|---|---|
appendfsync | always | 每执行一次更新命令,就会持久化一次 |
appendfsync | everysec | 默认情况每秒钟持久化一次 |
appendfsync | no | 不持久化 |
3. 总结
- RDB和AOF两种方式可以同时使用,但是在这种情况下,重启redis后,则会优先采用AOF方式来进行数据恢复,因为AOF方式的数据恢复完整度更高。
- 如果数据非常敏感/重要,对数据的完整性要求非常高,那么就用AOF方式,因为Redis如果出现故障,可能会有较长的一段数据丢失(默认是900秒也就是5分钟的数据丢失)。而用AOF,就算出现故障,最多也就丢失1秒钟内的数据(默认1秒持久化一次,如果要求更高可以改为always,执行更新命令,就持久化)
- 如果没有数据持久化的需求,也可以关闭RDB和AOF方式,redis将变成一个纯内存数据库