Redis-持久化(四)

a一、持久化的作用

redis所有数据保持在内存中,对数据的更新将异步地保存到磁盘上。

将内存的数据存入硬盘,当需要恢复数据时可以通过硬盘数据恢复至内存redis中去。

持久化方式

快照:记录某时某点的数据(mysql的dump 和 redis的RDB)

写日志:数据操作记录(mysql的binlog  和 redis 的 AOF)

二、RDB

RDB是一个二进制文件

触发机制

save(同步):保存redis快照命令 调用redis服务端,生成RDB二进制文件

文件策略,如果存在老的RDB文件,新替换老

bgsave(异步):生成redis的一个子进程,由子进程去完成RDB文件,完成通知主线程

文件策略与同步的相同

自动:redis提供自动生成RDB文件配置

 dbfilename  dump.rdb(生成rdb文件默认名称)

save  60 5  :标识60秒之内修改了5次

save自动配置满足任意一条就会被执行

注意:主从复制时也会生产RDB文件,执行shutdow命令时

缺点:耗时耗性能,不可控,丢失数据(宕机时容易丢失)

二、AOF

三种策略:always,everysec,no

always:每条命令都会fsync到硬盘中

everysec: 每秒把缓存区写入硬盘

no:交由操作系统决定

AOF相关配置

redis.conf

appendonly:如果AOF开启,那么在启动时Redis将加载AOF文件,它更能保证数据的可靠性

appendfilename:AOF文件名称

appendfsync:AOF策略

no-appendfsync-on-rewrite:重写aof时是否关闭掉正常的aof的增加

auto-aof-rewrite-percentage 100 :触发重写操作
auto-aof-rewrite-min-size 64mb :触发重写操作大小

AOF追加阻塞

1、阻塞定位方式,日志中存在:

 

2、命令:info Persistence 查看历史阻塞次数

三、RDB和AOF比较

同时开启了AOF和RDB时,重启redis会加载AOF 

RDB的最佳策略:“关”(不能完全关闭,主从复制时会第一次执行bgsave,全量复制),集中管理,主关从开

AOF最佳策略:“开”(缓存和存储),AOF重写集中管理,策略使用everysec

四、fork操作

1、同步操作

2、与内存息息相关:内存越大,耗时越长(与机型有关)

3、fork时间查看:info: latest_fork_usec

改善fork

1.优先使用物理机或者高效支持fork操作的虚拟化技术

2.控制Redis实例最大可用内存: maxmemory

3.合理配置Linux内存分配策略: vm.overcommit_memory=1

4.降低fork频率∶例如放宽AOF重写自动触发时机,不必要的全量复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值