redis持久化的取舍和选择

本文深入探讨Redis的RDB持久化机制,包括快照生成、数据恢复、触发机制及配置策略,对比save与bgsave指令,解析RDB在内存与硬盘间的数据迁移过程。
摘要由CSDN通过智能技术生成

持久化

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

持久化方式

  1. 快照 1: Mysql dump 2:redis rdb
  2. 写日志 1:mysql binlog 2: hbase hlog 3:redis aof

RDB

redis创建内存--- RDB(二进制)硬盘中
redis启动载入 ----RDB(二进制)

触发机制 主要三种方式

  1. save(同步)
  2. bgsave(异步)
  3. 自动

save命令

客户端 保存文件后创建RDB文件 二进制 保存的时候会阻塞

文件策略:如果存在新的RDB文件会替换老
复杂度:O

bgsave

1:bgsave
2:fork (依然会阻塞redis)
3:create RDB
4:bgsave successfully
子进程

bgsave  
background saving started

文件策略和复杂度相同

save与bgsave对比

命令savebgsave
IO类型同步异步
阻塞是阻塞在fork
复杂度OO
优点不会消耗内存不阻塞客户端命令
缺点阻塞客户端命令需要fork,消耗内存

自动生成RDB

save配置 :60秒钟 生成1万条
默认配置

配置secondschange
save9001
save30010
save6010000
save 900 1 
save 300 10 
save 60 10000
dbfilename dump.rdb 
dir ./
stop-writes-on-bgsave-error yes 如果出现错误是否继续 是 
rdbcompression yes  是否对数据进行压缩 是  
rdbchecksum yes  是否对数据进行校验 是 
dbfilename dump-${port}.rdb   
dir  /bigdiskpath 大硬盘路径 

触发机制 不容忽略方式

1:全量复制
2:debug reload
3:shutdown

mkdir data 
mkdir config  
rm -rf redis-6382.conf 
cp ../redis.conf . 
ll
vim redis-6379.conf   
#修改配置  
daemonize 守护进程方式 yes
pidfile   redis-6379.pid  
logfile "6379.log"
#save 900 1
#save  300 10 
#save 60 10000 
dbfilename  dump-6379.rdb 
redis-server redis-6379.conf 
wq 
redis-server redis-6379.conf 
redis-cli 
dbsize 
info memory 
redis-cli 
set hello world 
get hello 
save   
get hello (在阻塞)
bgsave
Background saving started
redis-cli shutdown  
redis-server redis-6379.conf  
dbsize 

RDB总结

1:RDB是Redis内存到硬盘的快照,用于持久化
2:save通常会阻塞redis
3:bgsave不会阻塞redis,但是会fork新进程
4:save自动配置满足任一就会被执行
5:有些触发机制不容忽视

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值