美文网首页程序员
redis高级-持久化策略

redis高级-持久化策略

作者: ssttIsme | 来源:发表于2018-10-16 10:26 被阅读0次

    redis关闭后数据还在!

    [root@localhost redis-3.2.8]# redis-cli -p 6379 shutdown
    [root@localhost redis-3.2.8]# redis-server redis.conf 
    [root@localhost redis-3.2.8]# redis-cli
    127.0.0.1:6379> keys *
    1) "ITEM_CAT_0"
    2) "ITEM_CAT_1"
    

    1.1策略说明

    redis作为内存数据库需要保存大量的用户的数据,但是redis中的数据保存到内存中。断点/宕机。肯定会导致内存数据丢失。为了防止数据丢失采用数据持久化方式,实现内存数据的备份。
    当redis中内存有数据时,通过自身策略有两种方式,一种是RDB模式,另一种是AOF模式。根据各自自身模式的设定进行数据的持久化。
    RDB或者AOF都有各自的持久化文件。
    当redis重启时,会根据配置文件中指定的持久化文件的名称,加载持久化文件,恢复内存数据。

    1.2RDB模式

    特点说明:RD模式定期将内存中的数据持久化。如果用户允许丢失少量的数据,则首选RDB模式,因为RDB模式定期为内存做快照,该方式的备份的速度是很快的。

    [root@localhost redis-3.2.8]# cat dump.rdb 
    REDIS0007   redis-ver3.2.8
    þdis-bits￀㨭eä@.used-mem�/
    ITEM_CAT_1ߟ[{"id":2,"text":"电子书刊","�state closed"},/7³像�11
                                                                        ±文原版8-�艺�24°儿�30人 X社科4�
                   经管励志5活5 �技9育6.港台图!Ƞ�07其它
    *]
    ITEM_CAT_0ᅢß[{"id":1,"text":"图书、音像电子 �
    刊","state closed"},A�74�®¶用@6�¨�16 +�脑 k办公�249
                                                                  理¸ª护化妆�90钟袠��296¯婴�378
    £品饮料 Ť¿健��43汽车!4 F�9玩具乐�55�机�58�数硠��633ǡ냥± �装�69�厨 »7
                                                                                                  服饰内衣�86�鞋鞡�¸�90�礼!q�箱占�»�96� 宝�103运动"
                                                        �廠�쁱147�½©票"D�.充值 ��务
    z]ÿ薊
    

    备份的命令
    说明:要在客户端执行命令

    手动备份save
    会造成线程阻塞。只有当备份操作完成时才允许执行redis更新

    [root@localhost redis-3.2.8]# rm dump.rdb 
    rm: remove regular file `dump.rdb'? y
    [root@localhost redis-3.2.8]# redis-cli
    127.0.0.1:6379> save
    OK
    127.0.0.1:6379> quit
    [root@localhost redis-3.2.8]# ls
    00-RELEASENOTES  COPYING   INSTALL    README.md   runtest-cluster   src
    BUGS             deps      Makefile   redis.conf  runtest-sentinel  tests
    CONTRIBUTING     dump.rdb  MANIFESTO  runtest     sentinel.conf     utils
    

    bgsave表示后台运行,不会造成线程阻塞

    [root@localhost redis-3.2.8]# rm dump.rdb 
    rm: remove regular file `dump.rdb'? y
    [root@localhost redis-3.2.8]# redis-cli
    127.0.0.1:6379> bgsave
    Background saving started
    127.0.0.1:6379> quit
    [root@localhost redis-3.2.8]# ls
    00-RELEASENOTES  COPYING   INSTALL    README.md   runtest-cluster   src
    BUGS             deps      Makefile   redis.conf  runtest-sentinel  tests
    CONTRIBUTING     dump.rdb  MANIFESTO  runtest     sentinel.conf     utils
    

    redis.conf

    save 900 1
    save 300 10
    save 60 10000
    

    在900秒内,redis做一次更新操作,则备份一次
    在300秒内,redis做10次更新操作,则备份一次
    在60秒内,redis做10000次更新操作,则备份一次
    操作越快备份周期越短

    dbfilename dump.rdb
    

    持久化文件名

    dir ./
    

    持久化文件路径 ./表示当前文件夹,建议用绝对路径

    1.3AOF模式

    说明:aof可以做到实时数据备份。该模式相当于配置文件记录了用户的全部操作过程。
    开启aof模式后,rdb模式不生效
    该操作的特点:
    1.可以实时数据备份,安全性更好
    2.持久化速度较RDB慢
    3.AOF持久化的体积会很大
    4.当数据恢复时需要消耗很长的时间
    5.持久化文件明文保存,没有加密
    redis.conf

    appendonly yes开启aof模式
    持久化文件的名称appendonly.aof

    appendonly yes
    
    # The name of the append only file (default: "appendonly.aof")
    
    appendfilename "appendonly.aof"
    
    # appendfsync always
    appendfsync everysec
    # appendfsync no
    

    appendfsync always 每次操作都会备份
    appendfsync everysec 每秒备份一次
    appendfsync no 不操作

    [root@localhost redis-3.2.8]# ls
    00-RELEASENOTES  COPYING   INSTALL    README.md    runtest           sentinel.conf  utils
    BUGS             deps      Makefile   redis.conf   runtest-cluster   src
    CONTRIBUTING     dump.rdb  MANIFESTO  redis.conf~  runtest-sentinel  tests
    [root@localhost redis-3.2.8]# rm dump.rdb 
    rm: remove regular file `dump.rdb'? y
    [root@localhost redis-3.2.8]# ls
    00-RELEASENOTES  COPYING  Makefile   redis.conf   runtest-cluster   src
    BUGS             deps     MANIFESTO  redis.conf~  runtest-sentinel  tests
    CONTRIBUTING     INSTALL  README.md  runtest      sentinel.conf     utils
    [root@localhost redis-3.2.8]# redis-cli shutdown
    [root@localhost redis-3.2.8]# redis-server redis.conf
    [root@localhost redis-3.2.8]# ls
    00-RELEASENOTES  CONTRIBUTING  dump.rdb  MANIFESTO   redis.conf~      runtest-sentinel  tests
    appendonly.aof   COPYING       INSTALL   README.md   runtest          sentinel.conf     utils
    BUGS             deps          Makefile  redis.conf  runtest-cluster  src
    

    aof模式持久化为文件的保存路径仍然为 dir ./

    相关文章

      网友评论

        本文标题:redis高级-持久化策略

        本文链接:https://www.haomeiwen.com/subject/kjpczftx.html