Redis持久化策略

问:怎么解决单点Redis数据丢失问题?
答:实现Redis数据持久化。


问:那什么情况会产生单点Redis数据丢失?(注意这里问的单点Redis)
答:Redis是内存存储服务或系统宕机、重启就有可能导致数据丢失。


问:那谈谈Redis数据持久化策略?
答:Redis持久化策略分为两种:RDB(内存快照)和AOF(追加文件),都是解决Redis单点数据丢失问题。

1、RDB:内存快照,就是把内存中的所有数据都记录到磁盘中的rdb文件中,如果宕机,故障重启后,Redis会去加载当前的dump.rdb文件,恢复丢失的数据。

        RDB原理:bgsave会fork(克隆) 出来一条子进程,这条子进程和主进程一模一样,此时由fork出来的子进程来进行持久化动作(RDB)生成temp.rdb文件,同时主进程去接着响应其他的操作,此时主进程把新的数据放入到一个缓冲区中,然后当子进程把主进程的数据同步完成后(即RDB持久化完成后),主进程会拿取子进程的temp.rdb并改名为 dump.rdb,再把新的数据再次传输到dump.rdb文件中。(两次备份之间可能会丢失数据。)

                    RDB持久化在四种情况下会触发执行:
                                i     执行save命令                 (save 会造成阻塞、不建议使用)
                                ii    执行bgsave命令
                                iii   Redis宕机时                    (Redis停机时会执行一次save命令,实现RDB持久化)
                                iiii  自动触发RDB条件时        (配置环境中的参数决定、可以手动修改和添加)

                     Redis自动触发RDB条件:
                               save 900 1             # 900秒内,如果至少有1个key被修改,则自动执行bgsave 
                               save 300 10           # 300秒内,如果至少有10个key被修改,则自动执行bgsave
                               save 60 1000         # 60秒内,如果至少有10000个key被修改,则自动执行bgsave

2、AOF原理:追加文件,记录用户的每一个写命令到AOF文件,AOF文件可以看做是命令日志文件。 
      AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF。

      AOF的三大同步策略:其实就是一个什么时机将缓冲区的数据刷写到磁盘的策略
            1、everysec      # 写命令执行完先放入AOF缓冲区,然后表示每隔1秒将缓冲区数据
                                         写到 AOF文件,是默认方案,最多丢失一秒数据。
            2、always         # 表示每执行一次写命令,立即记录到AOF文件,最多丢失一次数据。
            3、no                # 写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容
                                        写回磁盘,可能会丢失大量数据

AOF文件重写:目的:文件瘦身,使文件大小变小
        AOF文件重写原理:因为AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义,此时就会出现很多无意义的操作。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果

        AOF文件自动重写条件(阈值可以在redis.conf中手动修改配置):
                auto-aof-rewrite-percentage 100        # AOF文件比上次文件 增长超过100%则触发重写
                auto-aof-rewrite-min-size 64mb          # AOF文件体积到达64mb以上触发自动重写

3、两种Redis持久化策略区别:RDB安全性低但速度很快、AOF速度很慢但是比安全性很高。RDB文件存储数据为二进制,AOF记录的是一条条命令。RDB和AOF各有自己的优缺点,如果对数据安全性要求较高,在实际开发中往往会结合两者来使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值