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
操作系统决定什么时候该刷入硬盘

命令 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.最佳策略

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

你可能感兴趣的:(数据库)