介绍
RDB,redis database
在 指定的时间间隔内 将内存中的数据集 快照(snapshot) 写入磁盘。也是 默认 的持久化方式
快照:可以理解成把当前时刻的数据拍成一张照片保存下来。
这种方式是就是将内存中数据以快照的方式写入到 二进制 文件中
保存路径
在redis.conf配置文件中:
dir ./
表示当前启动redis服务的目录,
- 如果在linux上安装redis,需要改成固定目录
- 如果docker redis,不需要修改
文件名
在redis.conf配置文件中,默认的文件名为 dump.rdb
dbfilename dump.rdb
保存策略
正常关闭
linux安装redis,在客户端执行
shutdown时会自动保存docker redis,在
docker stop时会自动保存
save命令
以同步方式将当前 Redis 所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。
会阻塞客户端命令,不会消耗额外内存,很少使用
bgsave命令
在后台异步保存当前数据库的数据到磁盘
BGSAVE 命令执行之后立即返回 OK ,然后 Redis 会 fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
不会阻塞客户端命令,会消耗额外内存,一般较少使用
自动保存(关键)
通过配置文件实现,见下面
自动保存配置文件(关键)
保存策略
################################ SNAPSHOTTING ################################
#
# Save the DB on disk:
#
# save <seconds> <changes>
#
# Will save the DB if both the given number of seconds and the given
# number of write operations against the DB occurred.
#
# In the example below the behaviour will be to save:
# after 900 sec (15 min) if at least 1 key changed
# after 300 sec (5 min) if at least 10 keys changed
# after 60 sec if at least 10000 keys changed
save 900 1 # 在900秒内执行1次修改,就执行持久化
save 300 10
save 60 10000
在n秒内执行m次修改,就执行持久化
stop-writes-on-bgsave-error
无法写入磁盘,直接关闭写操作
stop-writes-on-bgsave-error yes
rdbcompression
进行rdb保存时,将文件压缩
rdbcompression yes
rdbchecksum
保存快照后,使用CRC64算法进行校验,会增加10%的性能消耗,如果希望获取最大性能提升,可以关闭此功能
如果仅做缓存使用,关闭该功能,以及关闭持久化
rdbchecksum yes
获取数据保存路径
config get dir
数据恢复
- 关闭redis
- 把
*.rdb文件拷贝到数据保存路径,通过config get dir查看 - 启动redis,快照文件直接加载
优点
- 不影响接收客户端指令
与AOF相比:
- 二进制数据文件,节省磁盘空间,适合备份和数据恢复
- 恢复数据快
缺点
- 数据庞大,消耗性能
- 可能会丢失数据。每间隔一段时间保存一次,如果redis非正常退出,会丢失最后一次修改的数据