首页 » PHP笔记 » [Redis学习教程3]之Redis的快照持久化和AOF持久化

[Redis学习教程3]之Redis的快照持久化和AOF持久化

高蒙 2016/02/17 16:45 2.2k浏览 0评论 Redis


Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据回复到内存(redis)里面。数据保存到硬盘的过程就称为“持久化”。

一、snap shotting 快照持久化

    该持久化默认开启,一次性把redis的所有数据全部保存到硬盘中一份。如果数据非常多(10G-20G)就不适合频繁进行该持久化操作。

    默认保存文件:dumo.rdb。

    redis.conf配置:

    1、快照保存规律:(增,删,改)不包括查询。

    save 900s 1K     900内有1K发生修改,快照就保存。

    save 300s 10K    300内有10K发生修改,快照就保存。

    save 60s  10000K 1000内有10000K发生修改,快照就保存。

    以上三个save的意思:

    数据修改的频率高,备份的频率也高。

    数据修改的频率低,备份的频率也低。

    2、dbfilename dump.rdb  备份文件的名称

    3、dir ./               备份文件的地址

二、手动发起快照持久化

    1、手动进行快照持久化

    指令:./redis.cli bgsave

三、append only file (AOF持久化,精细持久化) 

    1、本质:把用户执行的每个“写”指令(添加,修改,删除)都备份到文件中,还原数据的时候就是执行具体写指令而已。

    2、开启AOF持久化(会清空redis之前的数据)

      redis.conf配置文件

        1).appendonly no -> appendonly yes

        2).去掉 appendfilename appendonly.aof 前面 # 开启保存文件

        3).配置文件被修改,需要删除旧进程;再根据新进程配置文件,启动新进程。

    ps -A | grep redis           查看进程

    kill -9 7287                 停止进程

    ./redis-server redis.conf    启动进程

4).新进程启动完毕之后,可以在看到设置指定保存路径里面多了aooendonly.aof文件。

     3、redis的持久化方式 (redis.conf配置文件中)
 
       appendfaync always     // 每次收到写的指令就立即的强制写入磁盘,最慢,不推荐使用。

       appendfaync ecerysec   // 每秒强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐。(默认)

       appendfaync no         // 完全依赖os,性能最好,持久化没保证。不推荐。

    4、为aof备份文件做优化处理

    例如:多个set变成一个set指令

    指令:./redis-cli barewriteaof 压缩aof备份文件的大小 

22.jpg

四、redis持久化相关的指令

    1.bgsave 异步保存数据到磁盘。(快照持久化)

    2.lastsave 返回上次成功保存到磁盘的Unix时间戳。

    3.shutdown 同步保存到服务器并关闭redis服务器。

    4.bgrewriteaof 当日志文件过长时,优化aof日志文件存储。

    5. ./redis-cli bgrewriteaof

    6. ./redis-cli bgsave

    7. ./redis-cli -h 127.0.0.1 -p 6379 bgsave // 手动发起快照

 快照持久化和AOF持久化是相辅相成的,在数据还原的时候,将快照持久化和AOF持久化都要进行数据还原。




相关文章

我有话说

站长昵称:(*)

输入内容:

选个头像:

评论列表

    ...

    高蒙

    男, PHP程序猿

    文章

    485

    标签

    42

    热度

    10w+

    南京, 江苏, 中国

    人生要是没有理想, 那跟咸鱼有什么分别。