redis全面梳理(四)作者:PHPYuan 时间:2018-08-17 03:41:03数据持久化Redis提供了将数据定期自动持久化至硬盘的能力,包括RDB和AOF两种方案,两种方案分别有其长处和短板,可以配合起来同时运行,确保数据的稳定性。 必须使用数据持久化吗? Redis的数据持久化机制是可以关闭的。如果你只把Redis作为缓存服务使用,Redis中存储的所有数据都不是该数据的主体而仅仅是同步过来的备份,那么可以关闭Redis的数据持久化机制。 但通常来说,仍然建议至少开启RDB方式的数据持久化,因为:
RDB采用RDB持久方式,Redis会定期保存数据快照至一个rbd文件中,并在启动时自动加载rdb文件,恢复之前保存的数据。可以在配置文件中配置Redis进行快照保存的时机: save [seconds] [changes] 意为在[seconds]秒内如果发生了[changes]次数据修改,则进行一次RDB快照保存,例如 save 60 100 会让Redis每60秒检查一次数据变更情况,如果发生了100次或以上的数据变更,则进行RDB快照保存。 可以配置多条save指令,让Redis执行多级的快照保存策略。 Redis默认开启RDB快照,默认的RDB策略如下: save 900 1 save 300 10 save 60 10000 也可以通过BGSAVE命令手工触发RDB快照保存。 RDB的优点:
RDB的缺点:
AOF采用AOF持久方式时,Redis会把每一个写请求都记录在一个日志文件里。在Redis重启时,会把AOF文件中记录的所有写操作顺序执行一遍,确保数据恢复到最新。 AOF默认是关闭的,如要开启,进行如下配置: appendonly yes AOF提供了三种fsync配置,always/everysec/no,通过配置项[appendfsync]指定:
随着AOF不断地记录写操作日志,必定会出现一些无用的日志,例如某个时间点执行了命令SET key1 'abc',在之后某个时间点又执行了SET key1 'bcd',那么第一条命令很显然是没有用的。大量的无用日志会让AOF文件过大,也会让数据恢复的时间过长。 所以Redis提供了AOF rewrite功能,可以重写AOF文件,只保留能够把数据恢复到最新状态的最小写操作集。 AOF rewrite可以通过BGREWRITEAOF命令触发,也可以配置Redis定期自动进行: auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb 上面两行配置的含义是,Redis在每次AOF rewrite时,会记录完成rewrite后的AOF日志大小,当AOF日志大小在该基础上增长了100%后,自动进行AOF rewrite。同时如果增长的大小没有达到64mb,则不会进行rewrite。 AOF的优点:
AOF的缺点:
<>Redis全面梳理(一) (2018-08-17 03:41) >> 下一篇:redis全面解析(六) (2018-08-17 03:41) |
|
来自: 王宇w3j0f3o2vv > 《待分类》