redis 详解(4)持久化

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

定义

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

持久化的作用

方式 说明
快照 mysql dump,redis RDB
日志 mysql binlog,redis AOF,hbase Hlog

RDB

定义

三种主要方式触发

save(同步)

bgsave(异步)

命令 save bgsave
IO 类型 同步 异步
是否阻塞 是,阻塞发送在 fork
时间复杂度 O(n) O(n)
优点 不会消耗额外内存 不阻塞客户端命令
缺点 阻塞客户端命令 需要 fork,消耗内存

自动配置

配置 seconds changes
save 900 1
save 300 10
save 60 10000

其他方式触发

总结

AOF

RDB 现存问题

定义

三种策略

always

everysec

no

命令 always everysec no
优点 不丢失数据 每秒一次 fsync 不用管理
缺点 IO 开销大 丢一秒数据 不可控

重写

优势

实现方式

配置名 说明
auto-aof-rewrite-min-size aof 文件重写需要的大小
auto-aof-rewrite-percentage aof 文件增长率
统计名 说明
aof_current_size aof 当前大小(单位:字节)
aof_base_size aof 上次启动和重写的大小(单位:字节)

自动触发时机

RDB 和 AOF 的选择

RDB 和 AOF 比较

命令 RDB AOF
启动优先级
体积
恢复速度
数据安全性 丢数据 根据策略决定
轻重

RDB 最佳策略

AOF 最佳策略

最佳策略

fork 操作

fork 操作

优化 fork

进程外开销

子进程开销和优化

选项 开销 优化
CPU rdb和aof文件生成,属于CPU密集型 不做CPU绑定,不和CPU密集型部署
内存 fork内存开销,copy-on-write echo never > /sys/kernel/mm/transparent_hugepage/enabled
硬盘 aof和rdb文件写入,可以结合iostat,iotop分析 不要和高硬盘负载服务部署一起:存储服务,消息队列等;no-appendfsync-on-rewrite=yes,根据写入量决定磁盘类型;单机多实例持久化文件目录可以分盘

AOF 追加阻塞

阻塞定位

欢迎扫描下方二维码,持续关注:

互联网工程师(id:phpstcn),我们一起学习,一起进步

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看