redis 持久化数据保存RDB&AOF

 redis 数据的查询都是基于内存hash处理,但是为了防止断电榻机等问题造成数据的丢失,redis 采用持久化硬盘方式以应对数据丢失故障。

先看下redis 目录操作命令:

redis/bin 目录下有 

        1. redis-benchmark  为redis 性能基准测试

        2. redis-check-aof   为aof 文件恢复出现异常的修复

        3. redis-check-dump 为rdb 文件恢复出现异常的修复

        4. redis-cli       为redis客户端操作

        5. redis-server 为redis 服务端启动程序   

1. redis 持久化有两种方案可供选择RDB (redis data base ) 和 aof (append only file )

    rdb 详解:

        1)RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。

        2)redis.conf 配置茹下

             

         如果需要自定义快照rdb 的持久化方式,可以取消注释 save "",加入新的快照策略

       3)默认redis 使用快照的方式持久化内存数据至硬盘;

             save 900 1   900秒内有一个以上的key 写操作会另起一个线程进行快照的备份

       4) redis.conf  dir ./  设置数据存放目录

       5) rdbcompression yes 默认使用rdb 的压缩方式压缩文件。

     rdb 是redis 快速块照内存信息至硬盘持久化;但持久的方式

  aof 详解:

       1) aof 不是redis  默认开起的持久化方式。aof 的出现是弥补rdb 文件的不实时一致性。采用日志的形式来记录每个写操作,并追加到文件中

       2)aof 开启方式   appendonly yes

   3)  数据库文件名  appendfilename "appendonly.aof"

       4)文件追加方式  # appendfsync always  同步持久化,每次发生数据变化会立刻写入到磁盘中

                                  appendfsync everysec (默认方式)每秒异步写入磁盘 

                               #  appendfsync no  不同步

       5)aof 数据恢复,默认情况下,数据都会存在bin目录下,重新启动redis 即可以恢复之前的状态,load 硬盘数据至内存中

   6)aof 文件压缩配置 (redis 每次的操作都会append 至aof 文件末尾,导致文件异常庞大,此配置压缩文件,替换旧文件)

auto-aof-rewrite-percentage 100  
auto-aof-rewrite-min-size 64mb

  rdb 文件和 aof 文件可在生产中同时开启,redis 数据恢复首先加载aof 文件,如果aof 文件异常,可以使用rdb 恢复。

总结

  1. Redis 默认开启RDB持久化方式,在指定的时间间隔内,执行指定次数的写操作,则将内存中的数据写入到磁盘中。
  2. RDB  持久化适合大规模的数据恢复但它的数据一致性和完整性较差。
  3. Redis 需要手动开启AOF持久化方式,默认是每秒将写操作日志追加到AOF文件中。
  4. AOF 的数据完整性比RDB高,但记录内容多了,会影响数据恢复的效率。
  5. Redis 针对 AOF文件大的问题,提供重写的瘦身机制。
  6. 若只打算用Redis 做缓存,可以关闭持久化。
  7. 若打算使用Redis 的持久化。建议RDB和AOF都开启。其实RDB更适合做数据的备份,留一后手。AOF出问题了,还有RDB

 

posted @ 2018-08-27 19:34  Immer  阅读(2629)  评论(0编辑  收藏  举报