Redis持久化RDB和AOF操作

2 篇文章 0 订阅

RDB:一次数据快照,相当于把当前的数据以文本的形式保存到硬盘中,当redis重启时会自动加载备份的文件来恢复数据,分为手动开启和config里面配置自动备份策略

在redis.config里面开启

#找到这一行开启,backup.rdb是文件名,可以自定义
dbfilename backup.rdb

手动备份分为save命令和bgsave命令,当使用save时,这个进程会阻塞redis主进程,直到所有备份完成后,才会开启,所以一般不用来在线上环境运行,而是bgsave(redisRDB的自动保存策略也是bgsave),使用bgsave的时候,会fork(复制当前进程内数据)开辟一个子进程来备份,同时不影响主进程的运行

127.0.0.1:6379> save
ok

这个命令会手动开启备份,并保存一份文件到redis目录下,一般都是在redis根目录,如果找不到备份位置,那么输入以下命令会显示出来

127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "E:\\Java\\redis"
#同样,可以通过set来改变dir的保存位置,但是恢复数据时需要把rdb文件复制到根目录下,redis才会自动识别并加载数据

在redis.config里面可以配置自动备份策略,如下

save 10 20
save 600 100

这两行代表了当redis 10秒内更新了20次key和600秒内更新了100次key时,都会自动备份一次rdb数据保存在对应的目录下。


AOF:跟RDB不同的是aof会实时记录redis的每一次命令记录,redis启动时会生成一个aof文件在根目录下(指定位置跟rdb同理),然后每次redis执行命令,都会往这个文件里面追加一条记录,这样不管做了多少操作,直到redis宕机之前,数据都会是最新的,当然这会牺牲性能为代价。

aof默认是不开启的,需要启动的话要到redis.config中去手动开启

# Please check http://redis.io/topics/persistence for more information.

appendonly yes

随着时间的推移,这个aof文件会越来越大,于是redis提供了重写机制,通过重写,可以优化这个文件的大小来提高运行速度

手动重写

#执行bgrewriteaof命令即可重写aof文件
127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started

自动触发:根据config里面auto-aof-rewrite-min-sizeauto-aof-rewrite-percentage参数确定自动触发时机
auto-aof-rewrite-min-size:表示运行AOF重写时文件最小体积,默认为64MB
auto-aof-rewrite-percentage:代表当前AOF文件空间(aof_current_size)和上一次重写后AOF文件空间(aof_base_size)的值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值