关于Redis的持久化

redis的数据高可用存储机制是将数据存到内存中去,但是为了使redis在重启后数据的不丢失,需要将数据通过某种形式存到硬盘中去。

它支持两种持久化的机制,Rdb和aop,这两可以单独使用一种,也可以同时使用两种。

RDB

这种方式是通过快照完成的,当符合一定条件时,redis会自动将内存中的数据保存到硬盘上去,

redis的默认存储方式就是RDB.。

数据恢复

Redis启动时,会读取快照的文件,将数据存入内存中,一般情况下,1G的快照载入内存的时间为20~30秒。

快照的过程

1、Resdis使用fork函数复制当前的一份进程的副本,

2、当前的进程会继续执行并处理客户端发过来的请求,而副本进程将内存的中的数据存入到硬盘的临时文件中去。

3、当副本进程写完所有的数据的时候,会用该临时文件替换掉旧的RDB文件

手动快照

如果没有自动触发快照,可以执行手动快照,save和bgsave都是执行手动快照,但是两者区别,前者是主进程进行快照,会阻塞其他的请求,后者通过复制主进程的副本进程快照(注意:复制主进程是需要内存代价的,比如,如果主进程的内存是4G,那么副本进程也应该4G,所以说内存要求就挺高了)

RDB文件压缩

可以通过设置配置设置是否压缩

# 是否对数据进行压缩

rdbcompression yes

AOF

此持久化的策略是将发送到Redis服务器的每一条命令都记录下来,并保存到硬盘的AOF文件中,aof的文件存储位置和RDB位置相同

优化AOF文件

可能出现命令重复的问题,例如,set a qw,过了会又设置了set a ee,虽然aof文件会把这些命令都会记录先来,但是这不是最优的。所以要调用bgwriteaof命令在重写文件即可清除重复的文件。

重写策略

重写策略的参数设置:

auto-aof-rewrite-percentage 100

当前AOF文件超过上一次重写时的AOF文件大小的百分之多少时会再次进行重写。

auto-aof-rewrite-min-size 64mb

限制允许AOF文件重写的最小大小。通常AOF文件在很小的时候,即使有些冗余也是可以忽略的。

文件同步策略

文件写入默认情况下,先写到系统的缓存中,系统没30秒同步一次数据,才是真正写入到硬盘里面。如果在这个30秒内服务器宕机,拿数据也会丢失,Redis通过配置来修改策略。

# appendfsync always 每次都同步,但是最慢

appendfsync everysec 每秒同步(默认的同步)

# appendfsync no 不主动同步,由操作系统决定(最快但不安全)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西门吹水之城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值