work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Redis 持久化机制

Posted on 2020-07-04 12:37  work hard work smart  阅读(117)  评论(0编辑  收藏  举报

Redis的持久化机制分为RDB和AOF

RDB: Redis DataBase

AOF: Append Only File

 

一、RDB方式

1、什么是RDB

RDB: 每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。

如果宏机重启,那么内存里的数据肯定会没有的,那么再次重启redis后,则会恢复。

 

2、备份与恢复

内存备份 --> 磁盘临时文件

临时文件 --> 恢复到内存

 

3、RDB优劣势

优势:

     1) 每隔一段时间备份,全量备份

  2) 灾备简单,可以远程传输

  3) 子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除),保证备份数据的完整性

  4) 相对AOF来说,当有更大文件的时候可以快速重启恢复。

劣势:

     1)  发生故障时,有可能会丢失最后一次的备份数据

   2) 子进程所占用的内存会比父进程一模一样,如会造成CPU负担。

   3) 由于定时全量备份是重量级操作,所以对于实时备份,就无法处理了。

 

4、查看redis的配置文件

cd /usr/local/redis

vi redis.conf

 

1) 备份的快照文件 /usr/local/redis/working 下的dump.rdb

 

 

2) 备份的时机

 

 默认备份机制

save 900 1    900秒(15分钟)至少有一次key的修改,则保存一次快照

save 300 10  300秒(5分钟)至少有10次key的修改,则保存一次快照

save 60 10000  60秒(1分钟)至少有10000次key的修改,则保存一次快照

 

 

3)保存的时候发生错误则停止写入

stop-writes-on-bgsave-error yes

 

 

4) 压缩模式默认打开

rdbcompression yes

压缩的过程会占用CPU的性能(可忽略),设置为no的话将导致备份的文件较大。

 

5)设置备份rdb文件名称

dbfilename dump.rdb

 

 

6) 设置工作路径

dir /usr/local/redis/working

 

 

二、AOF

1、查看配置文件

cd /usr/local/redis

vi redis.conf

1) 默认AOF是关闭的,将no改为yes开启AOF

appendonly yes

2) AOF  文件名称

appendfilename "appendonly.aof"

3) AOF同步策略

# appendfsync always  只要有写操作,就同步一次。always策略会比较慢,并且安全的。几乎保证所有的数据是完整的,不会丢失。
appendfsync everysec 每秒钟同步一次
# appendfsync no

配置好之后,重启redis

/etc/init.d/redis_init_script stop

/etc/init.d/redis_init_script  start

此时查看working文件多了一个AOF文件appendonly.aof,大小为0

 

 

 

 4) 验证AOF文件

先清空redis,写入三个key

 

 查看appendonly.aof

*2
$6
SELECT
$1
0
*3
$3
set
$4
name
$8
zhangsan
*3
$3
set
$3
age
$2
20
*3
$3
set
$3
sex
$3
boy
~      

可以发现刚才的操作,用指令的形式记录了下来。(这里记录了所有写操作,读操作是没有的)

 

5) 当子进程正在备份的时候,不要进行同步。(不要把操作放入日志文件里)

no-appendfsync-on-rewrite no