redis-持久化
持久化 : redis会将数据异步的写入到磁盘, 使用时候在从磁盘写入的内存
实现持久化的方式有两种:1 是以快照的方式保存到磁盘入rdb , 2 是以写日志的方式 入AOF
RDB:
1 save 命令 同步进程 当输入一个save 命令会生成一个rdb文件,因为是同步的所以会造成redis的一个阻塞
2 bgsave :他会通过条用redis的fork() 函数生成一个子进程,让子进程取创建rdb文件,异步,redis主进程不会阻塞
3 通过配置,进行一个自动的rdb生成 ,
save 900 1 三个条件满足一个即可 , 生成新的rdb文件会替换旧的
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes 在bgsave错误时候停止写入
rdbcompression yes 支持压缩
缺点: 耗时耗性能 ,在写入硬盘消耗硬盘IO性能 , 会造成丢数据
AOF:
以记录日志的形式,执行一条命令会写入到AOF 文件中
AOF 的三种策略:
always : 每条命令都会写到AOF中 , 不会丢数据,但是消耗大量的Io性能
everysec : 没秒刷新一次写入到AOF中
no : 根据操作系统,有操作系统来决定什么时候刷入到AOF中
AOF重写: 是把重复的,过期的,无用的命令进行一个优化,合并
两种实现方式:
bgrewriteaof: 输入命令开启AOF重写
AOF重写配置:
AOF 配置:
appendonly yes : 使用aof 功能将这个改为yes
appendfilename "appendonly.aof” 文件名
appendfsync everysec : 同步的策略
no-appendfsync-on-rewrite yes : 再左aof重写时候, 是否进程aof的正常读写操作
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb