Redis的持久化--RDB的工作原理及引发的问题

Redis持久化RDB模式的工作原理:

Redis持久化RDB模式,Redis借助了fork命令的copy on write机制。在生成快照时,将当前进程整个复制出来,fork出一个子进程,然后在子进程中循环所有的数据,将数据写成为RDB文件。

Redis持久化RDB模式引发的问题:

RDB模式需要Redis服务所占内存的1倍的内存

例如一台机器总共16G内存,用了10G内存做Redis服务,假如这10G内存都占满了

这时运行save命令,这时会把10G的进程再复制一遍,变成20G,超过了16G就产生交换,

如果虚拟内存设置了为4G,这样save也能完成,由于引发大量的交换,会很慢;

如果虚拟内存设置了小于4G,这时Redis就会崩溃,而且数据也不会完整的保存到快照文件中,

重新启动,就会发现数据已经丢失了很多。

时间: 2024-10-23 03:41:42

Redis的持久化--RDB的工作原理及引发的问题的相关文章

redis++:Redis持久化 rdb & aof 工作原理及流程图 (三)

RDB的原理: 在Redis中RDB持久化的触发分为两种:自己手动触发与Redis定时触发. 针对RDB方式的持久化,手动触发可以使用: 1):save:会阻塞当前Redis服务器,直到持久化完成,线上应该禁止使用. 2):bgsave:该触发方式会fork一个子进程,由子进程负责持久化过程,因此阻塞只会发生在fork子进程的时候. 而自动触发的场景主要是有以下几点: 1):根据我们的 save m n 配置规则自动触发: 2):从节点全量复制时,主节点发送rdb文件给从节点完成复制操作,主节点

7.redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?

作者:中华石杉 面试题 redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? 面试官心理分析 在前几年,redis 如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有 codis,或者 twemproxy,都有.有一些 redis 中间件,你读写 redis 中间件,redis 中间件负责将你的数据分布式存储在多台机器上的 redis 实例中. 这两年,redis 不断在发展

003.图解分析 redis 的 RDB 和 AOF 两种持久化机制的工作原理

目录 RDB AOF 小结 参考 我们已经知道对于一个企业级的 redis 架构来说,持久化是不可减少的 tip 牢记企业级 redis 集群架构是用来支撑海量数据.高并发.高可用 持久化主要是做灾难恢复.数据恢复,也可以归类到高可用的一个环节里面去 比如你 redis 整个挂了,redis 就不可用了,你要做的事情是让 redis 变得可用,尽快变得可用你会怎么做? 你会重启 redis,尽快让它对外提供服务,但是就像上一讲说,如果你没做数据备份,这个时候 redis 就算启动了,也不可用,数

Redis的持久化--RDB

Redis提供了RDB持久化机制,即在指定的时间间隔内将内存中的数据集快照写入到磁盘中. RDB的优点: 1.这种方式,备份Redis数据库只有一个文件,一旦系统出现灾难性故障,可以非常容易进行恢复. 2.可以轻松的将一个压缩的备份文件转移到其他安全的存储介质上. 3.性能最大化,开始持久化时,只需fork出一个子进程,之后由子进程完成这些持久化的工作,可以极大的避免服务进程执行IO操作. 4.数据集很大时,启动效率高. RDB的缺点: 1.可以造成数据的丢失,因为系统一旦在定时持久化之前出现宕

Redis的持久化RDB

dbfilename redis.db  //持久化的文件dir /home/redis/6379    //文件所在目录save 900 1    // 900秒 修改一个key就保存一次save 300 10    // 300秒 修改10个key就保存一次save 60 10000    // 60秒 修改10000 个key就保存一次//上述3个save条件应该从下往上看,每个条件都是或的关系rdbcompression yes        //启用压缩rdbchecksum yes 

redis的持久化 rdb和aof

1.rdb 当满足条件时,redis单独会fork(创建)一个新的线程,会先将内存中的数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次已经持久化好了的文件,整个过程中,主进程是不进行任何IO操作的,确保了极高的性能,此时的主进程还可以进行读写操作.rdb数据持久化的缺点是最后一次持久化的数据可能丢失,当在最后一次持久化的时间截点内还没有持久化,此时机器宕机了或出故障了,那么最后一次的数据就没有持久化到. Fork:fork的作用是复制一个与当前进程一样的进程,新进程的所有

(05)redis的持久化RDB和AOF的配置及比较

redis操作的数据是在内存中的,它支持两种方案将内存中的数据持久化到硬盘中,下面分别介绍. 1.RDB方式(默认方式) RDB持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘.打开redis.conf,如图: save 900 1:表示15分钟(900秒钟)内至少1个键被更改则进行快照. save 300 10:表示5分钟(300秒)内至少10个键被更改则进行快照. save 60 10000:表示1分钟(60秒)内至少1

Redis数据持久化机制AOF原理分析二

Redis数据持久化机制AOF原理分析二 分类: Redis 2014-01-12 15:36  737人阅读  评论(0)  收藏  举报 redis AOF rewrite 目录(?)[+] 本文所引用的源码全部来自Redis2.8.2版本. Redis AOF数据持久化机制的实现相关代码是redis.c, redis.h, aof.c, bio.c, rio.c, config.c 在阅读本文之前请先阅读Redis数据持久化机制AOF原理分析之配置详解文章,了解AOF相关参数的解析,文章链

redis学习之——持久化RDB 和AOF

RDB: 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里.rdb 保存的是dump.rdb文件 RDB工作原理: Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件.整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方,式要比AOF方式更加