今日博客学习内容:Redis的持久化策略

1.Redis持久化策略

redis提供两种持久化机制:RDB和AOF

redis的默认持久化方式是RDB。

RDB

RDB:是Redis DataBase缩写。

按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。

生成快照的方式:

客户端方式:BGSAVE 和 SAVE指令
服务端方式:服务器配置自动触发 和 shutdown

优点:

只有一个dump.rdb文件,方便持久化
容灾性好,一个文件可以保存到安全的磁盘中。
性能最大化,子进程来完成写操作,主进程可以继续处理命令,实现IO最大化(使用单独的子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能)。
相对于数据集大时,比AOF的启动效率更高。

缺点:

数据安全性第。RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。
dump.rdb文件是一个redis中特制的二进制文件,涉及到不同的redis版本,可能会发生版本不兼容问题。

AOF

AOF:是Append Only File的缩写。

是指,将redis执行的所有写命令记录到日志文件中,将被执行的写命令写到AOF的文件末尾,当redis重启时,redis会从头到尾执行一次AOF文件所包含的所有写命令,以此回复AOF文件的记录的数据集。

开启AOF持久化

redis默认配置中AOF持久化机制是不开启的,需要在配置中开启。

修改 appendonly yes 开启持久化
修改 appendfilename “appendonly.aof” 指定生成文件名称

设置日志追加频率

追加频率选项:

① always【谨慎使用】
说明:每个redis写命令都要同步写入硬盘,严重降低redis速度
解释:如果用户使用了always选项,会将发生系统崩溃时出现的数据丢失减到最少,但因为这种同步策略需要对硬盘进行大量的写入操作,所以redis处理命令的速度会受到硬盘性能的限制。
注意:使用固态硬盘(SSD)时需谨慎使用always选项,这种模式不断写入少量数据,可能会引发严重的写入放大问题,导致固态硬盘的寿命从原来的几年降低为几个月。

② everysec【推荐】
说明:每秒执行一次的同步显示,将多个写命令同步到磁盘
解释:同时保障了数据安全和写入性能,redis每秒一次对AOF文件进行同步,此时AOF文件性能和不使用任何持久化特性时的性能基本相同;通过每秒同步一次AOF文件,redis可以保证,即使系统崩溃,最多丢失一秒之内产生的数据。

③ no【不推荐】
说明:由操作系统决定何时同步
解释:这个选项不好对redis性能带来影响,但是当系统宕机时,丢失的数据量具有不确定性;另外,如果用户硬盘处理写入操作不够快,当缓冲区被等待写入硬盘数据填满时,redis会处于阻塞状态,导致redis的处理命令请求速度变慢。

优点:

数据安全,AOF持久化可以通过配置appendfsync属性,设置其记录频率。
通过append模式写文件,即使服务器宕机,也可以通过redis-check-aof工具解决数据一致问题。
更加灵活。AOF机制的 rewrite 模式,AOF文件没被rewrite之前(文件过大时回对命令进行合并重写),可以删除其中的某些命令。

缺点:

AOF文件比RDB文件更大,且回复速度更慢。
数据集大时,AOF比RDB启动效率低。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值