redis的持久化
1 redis 2 3 持久化 4 5 RDB方式: 手动通过save命令 会把数据保存到创建的目录dump.rdb中 6 7 save指令的相关配置 8 dbfilename dump.rdb 9 说明: 设置本地数据存放文件名, 默认值为dump.rdb 10 经验: 通常设置为dump-端口号.rdb 11 dir 12 说明: 设置存储.rdb文件的路径 13 经验: 通常设置成存储空间较大的目录中,目录名称data 14 15 rdbcompression yes 16 说明: 设置存储至本地数据库时是否压缩数据, 默认为yes, 采用LZF压缩 17 经验: 通常默认为开启状态,如果设置为no, 可以节省CPU运行时间,但会使存储的文件变大(巨大) 18 19 rdbchecksum yes 20 说明: 设置是否进行RDB文件格式 校验, 该校验过程在写文件和读文件过程均进行 21 22 注意: save指令的执行会阻塞当前Redis服务器,直到当前rdb过程完成为止,有可能会造成长时阻塞, 线上环境不建议使用 23 bgsave指令是针对save阻塞问题做的优化。Redis内部所有涉及到RDB操作都采用bgsave的方式。save命令可以放弃使用。 24 25 自动执行save命令 26 在配置文件里配置 save 时间期限 数据变化次数 27 28 注意: save配置要根据实际业务情况进行设置,频率过高或过低都会出现性能问题,结果可能是灾难必的 29 save配置中对于second与changes设置通常具有互补 对应关系,尽量不要设置成包仿性关系 30 save配置启动后执行的是bgsave操作 31 32 rdb特殊启动形式 33 全量复制 34 服务器运行过程 中重启 debug reload 35 关闭服务器时指定保存数据 shutdown save 36 37 38 RDB优点 39 RDB是一个紧凑压缩的二进制文件,存储效率较高 40 RDB内部存储的是redis在某个时间点的数据快照,非常适合用于数据备份 ,全量复制等场景 41 RDB恢复数据的速度比AOF快很多 42 应用: 服务器中每X个小时执行bgsave备份,并将RDB文件拷贝到远程机器中,用于灾难恢复, 43 44 RDB缺点: 45 RDB方式无论是执行指令还是利用配置,无法做到实时持久化,具有较大的可能性丢失数据 46 bgsave指令每次运行要执行fork操作创建子进程,要牺牲一些性能 47 Redis的众多版本中未进行RDB文件格式的版本统一,有可能出现各版本服务之间数据格式无法兼容现象 48 49 50 AOF方式: 51 配置文件: appendonly yes 52 appendonly always | everysec 53 54 AOF重写: 55 随着命令不断写入AOF,文件会起来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。AOF文件重写是交 56 Redis进程内的数据转化为写命令同步到新AOF文件的过程,简单说就是将对同一个数据的若干条命令执行结果转化成最终 57 结果数据对应的指令进行记录。 58 AOF重写作用 59 降低磁盘占用量,提高磁盘利用率 60 提高持久化效率,降低持久化写时间,提高IO性能 61 降低数据恢复时间,提高数据恢复效率 62 63 自动重写触发每件设置 64 auto-aof-rewrite-min-size size 65 auto-aof-rewrite-percentage percent 66 67 自动重写触发对比参数(运行指令 info Persistence获取具体信息) 68 aof_current_size 69 aof_base_size 基础大小 70 71 自动重写触发条件 72 aof_current_size>auto-aof-rewrite-min-size 73 (aof_current_size-aof_base_size)/aof_base_size>=auto-aof-rewrite-percentage 74 RDB与AOF区别 75 76 综合比对 77 RDB与AOF的选择实际上是在做一种权衡,每种都有利弊 78 如不能承受数分钟以内的数据丢失,对业务数据非常敏感,选用AOF 79 如能承受数分钟以内的数据丢失,且追求大数据集的恢复速度,选用RDB 80 灾难恢复选用RDB 81 双保险策略,同时开启RDB和AOF,重启后,Redis优先使用AOF来恢复数据,降低丢失数据的量