Redis持久化

109 阅读3分钟

这是我参与「掘金日新计划 · 6 月更文挑战」的第27天 ,点击查看活动详情

\

  redis的官网:

redis.io  6379

1.持久化方式就是

  1. RDB:(Redis DataBase)

  2. AOF( Append  only File)   追加一个文件;

 

   RDB: REDIS DataBase:

持久化的方式;

2.RDB:(Redis DataBase)

       这个方式有极高的性能,

  •  大规模的数据的恢复:\

  • 且对于数据恢复的完整性不是那么敏感,那就选择RDB(Redis Database)

 

指的是指定时间间隔内将内存中的数据及快照(snapshot) --->写入磁盘
   行话: 讲的是snapshot快照 ---->将快照文件读取到内存中;

 2.1 RDB的缺点: 最后一次持久化后的数据可能丢失;

    RDB是 : redis在自己主进程不进行任何IO操作中, fork一个子进程来持久化这个文件快照,(分片保存,或者说是每隔五分钟备份一次,将上次备份的替换成新的)

\

 2. 2 Fork :

     复制一个与当前进程一模一样的进程,新进程的所有数据都是和原来的主进程保持一致,但是这是一个全新的进程,并作为原进程的子进程;

     但是要是本来的

  

\

2.3  RDB默认保存的文件和保存的条件

     

    生成一个dump.rdb文件;

         

 

 

   save <second> <changes>
默认的:
in     the  example  below  the behaviour  will be  to save:
    -- after  900 sec(15 minuter) if  at least 1 key changed
    -- after 300 sec (5 minuter) if  at least 10 key changed
    -- after 60 sec if at least 10000 keys changed
    
    
    自己设定的,在redis的配置文件中改动  save 120  10120秒钟改变10次(除了get))
    
    clean 
    
    shutdown
    
    exit
    默认存在的是一个redis的 dump. rdb的持久化文件;
 

   查看redis是否在启动,有哪些方法或者是命令;

  

 

  1, ps -ef |grep redis      (管道服务,出现两个才证明启动)
    root  7872 5159 11:04 pts/2  00:00:00 grep redis
    
 2. lsof -i: 6379           (用端口号查询)
    
 3. netstat- intup 

上述要求的是在

120秒钟--改变10 key(crud),不算get ,生成一个dump.rdb持久化文件

2.4触发快照snapshot快照:

设置好之后,比如 

 

save <second> <changes>
 save 120  10

  主机和备机是两台机器,用于RDB的持久化;

   

3.AOP:( Append  only  file):(仅仅日志的形式保留写的记录)

  1.以文件的形式备份数据

     用日志的形式来记录每个写操作,将 Redis 执行过的所有写的指令记录下来(读操作不记录)

\

\

 2.文件只能增加,不能改写;

\

3.  redis重新启动会读取(AOF的日志)文件重新构建数据,换言之,

redis 重启是根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作;

 

set  k1 10;
incr  k1   12;
incr   k1   13:
 // 增加的代码k_v键值对--->redis 的 AOF;

   还是一个比较对于简单的文件重启的过程:但是RDB是主进程fork 子进程

  

  1. 文件的格式或者说是名字:

  appendonly.aof文件;

\

   可以保证数据一致性的比较;

  AOF 比较的是数据一定可以备份成功;

 但是效率比较低下,因为每次的写操作都会记录下来,形成一个完整的文件名称-----用于数据的恢复;