- 为什么redis需要持久化:redis是单机小程序,redis是内存级的io,内存需要对数据持久化,否则丢数据
- 持久化方式:快照、日志,这不仅仅针对于redis,快照的概念是全量的,比如游戏存档,rdb是redis的快照,按照时间点的,但是时间点间隔大容易丢数据,好处是恢复速度快。记录了当时时间点所有全量的数据状态。
- aof是redis日志,日志是线性,追加的,记录命令执行状态的,伴随redis命令不断执行,redis的日志会越来越大,但是因为记录所有redis操作所以数据恢复很全,但是因为日志是线性的,记录的是执行命令的文本,这样恢复数据也是重新执行一遍,比较慢。redis默认开启的是rdb,因为redis快是其追求,而且redis场景大多数也是缓存。所以持久化也是redis必要的,因为如果数据没有,请求会透传redis把mysql压死。
- 持久化仅仅解决内存丢失数据问题,不解决其他痛点。
- 日志有3种实现方式:
- 1.redis接受修改的操作,内存变现后开始堵塞,调io写入磁盘,返回成功,这样一个链式调用保证每一条命令不会丢失。
- 2.redis只把增删改的操作变化的刷给内核,而我们都知道程序给内核的数据不是立刻写入磁盘的。达到一定量级才批量写入(pagecache)。
- 3.折中的方案是每秒钟刷一下,每秒控制丢失的量相对于第一种加时间限制。日志都是追加的,会越来越大,这样不行,redis4.x后在开启aof日志时,吧删除抵消指令这件事变成全部删除,生成rdb在吧该时间点rdb拼入日志,形成混合日志方案。
redis 持久化
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本文是《Redis开发与运维》的学习笔记。内容大部分摘自此书。 众所周知,redis是内存数据库,它把数据存储在内...