Redis 持久化的取舍和选择

持久化的作用

1.什么是持久化

redis 将数据保存在内存中,对数据的跟新异步保存在磁盘当中。

2.持久化实现方式

快照,某时某点数据的备份 1.Mysql Dump 2.redis RDB
写日志 1.MySql binlog 2.redis AOF

RDB

1.什么是RDB

RDB是redis内存到硬盘的快照,用于持久化
redis[内存】—->创建快照—->RDB 文件(二进制)—->重新载入—>redis(内存)

2.触发方式

1.Sava (同步)
redis: save #(可能会阻塞 redis) 如果存在老的RDB文件,将会替换
Ok
2.bgsave(异步 不会阻塞redis ,但是fork()新进程)先返回ok ,在后台继续执行
执行过程:通过fork().生成子进程,CreateRDB去生成RDB 文件,告诉主线程生成成功

sava 和 bgsave 对比:

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

3.自动(创建bgsave 生成RDB 文件) 生成太频繁。。。

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

4.相关配置说明
dbfilename dump.dp #文件名称 一般 dump-{port}.rdb
dir./ #存放在当前目录下
stop-writes-on-bgsave-error yes #出现错误是否停止写
rdbcompression yes #是否压缩
rdbchecksum yes #校验

3.不容忽视的方式

1.全量复制 [主从复制]
2.debug reload
3.shutdown 【sava 参数】

配置过程

cd ../redis.conf . #将默认的redis.conf 拷贝到当前目录下
cp redis.conf redis-6379.conf
vim redis-6379.conf
[
daemonize yes
logfile “6379.log”
dbfilename dump-6379.rdb
dir /opt/soft/redis/data
]
redis-server redis-6379.conf
redis-cli
cd /opt/soft/redis/data
tail -f 6379.log #tail -n 10 6369.log 观察文件未十行

AOF

1.RDB 现存的问题

耗时(所有数据都需要拷贝)、耗性能(fork消耗内存)
IO性能的消耗
不可控,丢失数据(下一秒变化肯定丢失数据)

2.AOF 运行原理

1.创建
写一条命令则追加到日志文件中
2.恢复
AOF文件载入到redis 中实现数据的恢复

3.AOF 三种策略

1.always
写命令时候写到硬盘的缓冲区,根据一定的策略写入到磁盘当中(AOF)
always 是每一条命令到会写入到硬盘中(1s内可能写入很多次)
2.everysec
每秒把缓冲区写到缓冲值,高写入量时候保护磁盘
3.no
操作系统决定什么时候该刷入硬盘

扫描二维码关注公众号,回复: 953205 查看本文章
命令 always everysec no
优点 不丢失数据 每秒一次fsync 不管用
缺点 IO开销大 丢一秒数据 不可控

4.AOF 重写

AOF重写 对原生AOF 进行优化,比如过期的,重复的,没有用的可以优化的命令重写。
优点:减少磁盘占用量;加速恢复速度
两种方式:
1.bgrewriteaof
类似bgsave ,子进程进行AOF重写(将radis 内存数据回溯)
2.AOF重写配置(以下两个要求都需要满足)
auto-aof-rewrite-min-size:AOF文件重写需要的尺寸
auto-aof-rewrite-percentage:AOF文件增长率

5.AOF 相关配置

appendonly yes# 使用AOF 持久化基础
appendfilename “appendonly-{port}.aof” # 持久化文件名
appendfsync everysec #同步策略
dir /path #日志路径
no-appendfsync-on-rewrite yes# AOF 重写时候是否需要做append 操作,这里是不做

redis-cli
config get appendonly
config set appendonly yes
config rewrite
ll #data 下面出现 appendonly.aof
bgrewriteaof # aof重写

RDB 和AOF 选择

1.RDB与AOF 比较

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

2.RDB最佳策略

”关“
”集中管理” 按星期备份等
主从,从开

3.AOF最佳策略

“开” :缓存和存储
AOF 重写集中管理
everySec

4.最佳策略

小分片
缓存或则存储
监控
足够内存

猜你喜欢

转载自blog.csdn.net/jcsyl_mshot/article/details/80274804