redis持久化的取舍和选择

持久化

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对比

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

自动生成RDB

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

配置 seconds change
save 900 1
save 300 10
save 60 10000
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:有些触发机制不容忽视

你可能感兴趣的:(redis)