Redis 持久化的方式

335 阅读2分钟

redis 持久化的2种方式

1.RDB(Redis DataBase) RDB 快照持久化 在某一时刻将数据持久到磁盘 用于数据恢复或者备份多 缺点某个点挂了停机等情况 写入了的数据 没达到条件 没持久到磁盘 对于高可用的场景不适合。

2.AOF(Apend Only File) AOF 就是记录每次的操作 类似mysql bin_log

RDB 开启方式

redis.conf 查看save配置 格式:save n m n表示时间 秒 m表示 增删改的次数 不包括查

自动保存

save 10 1 如果10秒内有一次操作 就写入到文件去 save 300 10 save 60 10000

手动保存 也就是不用等到上面的条件 进入客户端执行bgsave

写入到哪个文件?

redis.conf 中配置 dbfilename dump.rdb 当然也可以自己改名

AOF开启方式

redis.conf配置 appendonly yes 默认是no 启动aof持久化 (会清空之前存在内存的数据) appendfilename "appendonly.aof" 保存在哪个文件

写入策略

appendfsync always //每次收到命令立即强制写入文件 性能最慢 但是最大化的持久化 不推荐使用

appendfsync everysec //每秒强制写入磁盘一次 在性能和持久化做了很好的折中 推荐使用

appendfsync no 以来服务器操作系统 性能最好 持久化没保证

优化AOF日志文件

进入redis 或者 redis-cli bgrewriteaof bgrewriteaof 查看文件大小会发现轻了很多 比如你每次incr age 10都执行 其实记住最后那个就好了 比如复制文件 太大了 可以通过他压缩下

恢复异常文件

aof文件可能写着写着断电 导致里面的格式 读取不成功 我们可以尝试异常恢复
首先先备份下这个aof 备份的目的是怕出了意外还能有一个备份的
redis-check-aof --fix aof的路径 这个命令执行在redis的安装目录 里面有个redis-check-aof文件

同理 redis-check-dump --fix dump.rdb路径 恢复rdb文件

额外的一个命令

lastsave 最近一次保存到磁盘的时间戳