Redis持久化
Redis是操作内存的,所以是内存数据库,断电即失,所以需要持久化
RDB
文件名:dump.rdb
# The filename where to dump the DB
dbfilename dump.rdb
在指定时间间隔内,将内存中的数据,集体快照写入磁盘内,也就是Snapshot快照,他恢复时是将快照文件直接读到内存中
-
RBD会单独创建一个名为fork的子进程来持久化,
-
会先将数据写道一个临时文件中,
-
待持久化结束,将这个临时文件替换上次持久化的文件
-
整个过程主进程是不进行I/O操作,确保了极高的性能
-
RDB 比AOF方式更加高效
-
redis.conf文件中,默认为RDB
优点:
1、适合大规模的恢复
2、对数据完整性要求不高
缺点:
1、因为是时点性的,在持久化时将数据保存到磁盘需要一定的时间,在这段时间内可能会有其他的写操作,所以容易丢失数据
2、 fork会占用一定的内存空间
- 修改60秒内,修改2次文件就会触发RDB机制,就会生成对应的文件
触发机制
1、 save规则满足的情况下,会触发rdb规则
2、执行flushall命名,会触发rdb规则
3、退出redis,触发规则
恢复rdb文件
1、将rdb文件放在redis的启动目录下,redis启动时就会自动检查dump.rdb文件
2、查看启动文件的位置redis.conf
127.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/bin/packetconfig"
3、放在"/usr/local/bin/packetconfig"
目录下启动就会自动恢复数据
4、如果我想要去手动存储一次
sava 即可
如果我退出后,删除文件,那么,再次进来,数据就没有了