Redis学习(八)——持久化之RDB

1. 概念

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时将快照文件直接读到内存中。

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程结束后,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完成性不是很敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。

2. 流程

3. 配置

redis.conf中的配置如下:

# 3600s内,至少有1个key进行了修改,进行持久化操作
save 3600 1
 
# 300s内,至少有100个key进行了修改,进行持久化操作
save 300 100
 
# 60s内,至少有10000个key进行了修改,进行持久化操作
save 60 10000
 
# 持久化出错 是否需要继续工作
stop-writes-on-bgsave-error yes
 
# 是否压缩rdb文件 会消耗一些cpu资源
rdbcompression yes
 
# 保存rdb文件时,是否校验rdb文件
rdbchecksum yes
 
# rdb文件保存的目录
dir ./
 
# rdb文件的名字
dbfilename dump.rdb

4. 测试

1)测试目标

# 3600s内,至少有1个key进行了修改,进行持久化操作
save 3600 1

2)删除rdb文件

[root@192 bin]# ls
cmake  curve_keygen  gdbserver        redis-check-rdb  redis-server
cpack  dong_config   redis-benchmark  redis-cli
ctest  dump.rdb      redis-check-aof  redis-sentinel
[root@192 bin]# rm dump.rdb 
rm:是否删除普通文件 "dump.rdb"?r
[root@192 bin]# 

3)设置key

[root@192 bin]# redis-server dong_config/redis.conf 
[root@192 bin]# ps -ef | grep redis
root      4889     1  0 16:20 ?        00:00:00 redis-server 127.0.0.1:6379
root      5036  1772  0 16:23 pts/0    00:00:00 grep --color=auto redis
[root@192 bin]# redis-cli -p 6379
127.0.0.1:6379> ping 
PONG
127.0.0.1:6379> set k1 5
OK

4)查看rdb文件是否生成

[root@192 bin]# ls
cmake  curve_keygen  gdbserver        redis-check-rdb  redis-server
cpack  dong_config   redis-benchmark  redis-cli
ctest  dump.rdb      redis-check-aof  redis-sentinel
[root@192 bin]# 

生成了一个新的rdb文件。

5)退出redis并重启,查看k1值是否还存在

[root@192 bin]# redis-cli -p 6379
127.0.0.1:6379> ping 
PONG
127.0.0.1:6379> set k1 5
OK
127.0.0.1:6379> SHUTDOWN
not connected> exit
[root@192 bin]# redis-server dong_config/redis.conf 
[root@192 bin]# redis-cli -p 6379
127.0.0.1:6379> get key1
(nil)
127.0.0.1:6379> get k1
"5"
127.0.0.1:6379> 

可以看到k1的值为5,说明redis关机重启之后数据依然存在。

5. 触发机制

产生rdb文件的情况:
1) save规则满足;
2) 执行flushall命令;
3) 退出redis;

说明: 将rdb文件放在redis的启动目录时,redis启动时会自动检查dump.rdb文件,恢复其中的数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值