redis持久化

  为了避免内存中数据丢失,redis提供了对持久化的支持,redis提供了RDB和AOF两种不同的数据持久化方式。

  • RDB:快照存储持久化方式,将Redis某一时刻的内存数据保存到硬盘的文件中,默认文件名为dump.rdb。当redis服务器启动时会重新加载dump.rdb文件的数据到内存中。

    过程为:

    1. 生成临时rdb文件并写入数据 
    2. 完成数据写入并用临时文件代替正式的rdb文件
    3. 删除原来的rdb文件。

    方式有:

    • save命令:同步进行持久化,服务器会阻塞所有请求,直至数据同步完成。
    • bgsave命令:异步进行持久化,redis服务器主进程forks一个子进程来数据同步。
    • 服务器配置自动触发,在配置文件redis.conf里面配置 save 900 1 ;900秒内至少达到一条写命令。如果设置触发时间太短会容易频繁写入rdb文件影响服务器进程,时间太长又会造成数据丢失 

    优缺点:

    • 文件恢复数据比较快
    • rdb文件紧凑,适合数据备份
    • 对redis服务器性能影响较小
    • 服务器宕机可能会造成某个时段的数据丢失(数据没来得及同步)
    • save命令会造成服务器阻塞
    • bgsave命令forks子进程时如果数据量过大也会发生阻塞,也会耗费内存。  
  • AOF(Append-only file):记录客户端对服务器的每一次写操作,并将写操作保存到aof文件末尾,redis服务器重启时会加载aof文件的命令恢复数据。

   写入策略(通过appendsync选项指定):

    • always:每一个写操作都保存到aof文件里,该策略很安全,但每个写都有IO操作,所以比较慢。
    • everysec:默认写入策略,每秒写一次aof文件,最多丢失1s数据。
    • no:redis服务器不写入aof,操作系统来处理什么时候写入aof,更快但是不安全。

   优缺点:

    • 对服务器性能影响较小,速度更快,消耗内存较少。
    • 日志文件太大
    • 回复数据的书读比RDB慢。
  • AOF与RDB的对比
         

        

以上参考  https://mp.weixin.qq.com/s/ij67XYJgYK2kYrAlSDz3sw

原文地址:https://www.cnblogs.com/smallzhen/p/14624676.html