幸运蛋蛋pc开奖
这篇文章主要给大家介绍了关于redis的2种持久化方案的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用redis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。

Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到?#25490;?#19978;(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。

人生在于折腾系列,网络,多线程等系列博客楼主还在继续折腾也不会放弃。这是全新的系列,缓存的知识其实并不仅仅在于简单的增删改查,我觉得有必要全面深入的学习一波。记录学习的过程与体悟。

RDB

什么是RDB

对redis中的数据执行周期性的持久化,通过配置文件中设置检查间隔时间与备份触发条件来对数据进行周期性的持久化

RDB持久化的优点

    RDB会生成多个数据文件,每个数据文件都代表了某一个时刻中redis的数据,这种多个数据文件的方式,非常适合做冷备份。 RDB对redis对外提供的读写服务,影响非常小,可以让redis保持高性能,因为redis主进程只需要fork一个子进程,让子进程执?#20889;排蘄O操作来进行RDB持久化即可 相对于AOF持久化机制来说,直接基于RDB数据文件来重启和恢复redis进程,更加快速

RDB持久化的缺点

    如果想要在redis故障时,尽可能少的丢失数据,那么RDB没有AOF好。一般来说,RDB数据快照文件,都是每隔5?#31181;櫻?#25110;者更长时间生成一次,这个时候就得接受一旦redis进程宕机,那么会丢失最近5?#31181;?#30340;数据。这个问题,也是rdb最大的缺点,就是不适合做第一优先的恢复方案,如果你依赖RDB做第一优?#28982;?#22797;方案,会导致数据丢失的比较多 RDB?#30475;?#22312;fork子进程来执行RDB快照数据文件生成的时候,如果数据文件特别大,可能会导致对客户端提供的服务暂停数毫秒,或者甚至数秒一般不要让RDB的间隔太长,否则?#30475;?#29983;成的RDB文件太大了,对redis本身的性能可能会有影响的

如何配置redis的RDB持久化

redis.conf文件,去配置持久化

save 60 1000

每隔60s,如果有超过1000个key发生了变更,那么就生成一个新的dump.rdb文件,就是当前redis内存中完整的数据快照,这个操作也被称之为snapshotting,快照

也可以手动调用save或者bgsave命令,同步或异步执行rdb快照生成。(save在生成dump.rdb文件的时候redis主线程将会被阻塞,bgsave则不会阻塞redis主线程)

save可以设置多个,就是多个snapshotting检查点,每到一个检查点,就会去check一下,是否有指定的key数量发生了变更,如果有,就生成一个新的dump.rdb文件

AOF

什么AOF

AOF机制对每条写入命令作为日志记录,以append-only的模式写入一个日志文件中,在redis重启的时候,可以通过回放AOF日志中的写入指令来重新构建整个数据集。

AOF持久化的优点

    AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作(fsync的功能是确保所有已修改的内容已经正确同步到硬盘上,该调用会阻塞等待直到设备报告IO完成。),最多丢失1秒钟的数据每隔1秒,就执行一次fsync操作,保证oscache中的数据写入?#25490;?#20013;redis进程挂了,最多丢掉1秒钟的数据。 AOF日志文件以append-only模式写入,所以没有任何?#25490;?#23547;址的开销,写入性能非常高,而且文件不容易破损,即使文件尾?#31185;?#25439;,也很容易修复。 AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。因为在rewritelog的时候,会对其中的指导进行压缩,创建出一份需要恢复数据的最小日志出来。再创建新日志文件的时候,老的日志文件还是照常写入。当新的merge后的日志文件ready的时候,再交换新?#20808;?#24535;文件即可。 AOF日志文件的命令通过非常可读的方式进行记录,这个特性非常适合做灾难性的误删除的紧?#34987;?#22797;。比如某人不小心用flushall命令清空了所有数据,只要这个时候后台rewrite还没有发生,那么就可以立即拷贝AOF文件,将最后一条flushall命令给删了,然后再将该AOF文件放回去,就可以通过恢复机制,自动恢复所有数据。

AOF持久化机制的缺点

    对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大。 AOF开启后,支持的写QPS会比RDB支持的写QPS?#20572;?#22240;为AOF一般会配置成每秒fsync一次日志文件。尽管每秒一次fsync,性能?#19981;?#26159;很高的,如果你要保证一条数据都不丢,也是可以的,AOF的fsync设置成没写入一条数据,fsync一次,那就完蛋了,redis的QPS将会更低。 以前AOF发生过bug,就是通过AOF记录的日志,进行数据恢复的时候,没有恢复一模一样的数据出来。所?#36816;擔?#31867;似AOF这种较为复杂的基于命令日志/merge/回放的方式,?#28982;?#20110;RDB?#30475;?#25345;久化一份完整的数据快照文件的方式,更加脆弱一些,容易有bug。不过AOF就是为了避免rewrite过程导致的bug,因此?#30475;蝦ewrite并不是基于旧的指令日志进行merge的,而是基于当时内存中的数据进行指令的重新构建,这样健壮性会好很多。 唯一的比较大的缺点,其实就是做数据恢复的时候,会比?#19979;?#36824;有做冷备,定期的备份,不太方便,可能要自己?#20013;?#22797;杂的脚本去做,做冷备不太合适。RDB恢复日志,就是一份数据文件,恢复的时候,直接加载到内存中即可。而AOF则不同,做数据恢复的时候,其实是要回放和执行所有的指令日志,来恢复出来内存中的所有数据的。

如何配置redis的AOF持久化

AOF持久化,默认是关闭的,默认是打开RDB持久化

appendonly yes,可以打开AOF持久化机制,在生产环境里面,一般来说AOF都是要打开的,除非你说随便丢个几?#31181;?#30340;数据?#21442;?#25152;?#20581;?#25171;开AOF持久化机制之后,redis?#30475;?#25509;收到一条写命令,就会写入日志文件中,当然是先写入os cache的,然后每隔一定时间再fsync一下。

如果AOF和RDB都开启了,redis重启的时候,优先通过AOF进行数据恢复的,因为aof数据比较完整

可以配置AOF的fsync策略,有以下三种策略可以选择:

    always: ?#30475;?#20889;入一条数据,立即将这个数据对应的写日志fsync到?#25490;?#19978;去,性能非常非常差,吞吐量很低; 确保说redis里的数据一条都不丢,那就只能这样了 everysec: 每秒将os cache中的数据fsync到?#25490;蹋?#36825;个最常用的,生产环境一般都这?#30913;?#32622;,性能很高,QPS还是可以上万的 no: 仅仅redis负责将数据写入os cache就撒手不管了,然后后面os自己会时不时有自己的策略将数据刷入?#25490;蹋?#19981;可控了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对爱安网的支持。

最新资讯
王?#21363;?#34987;二?#35748;?#21046;消费 是否高强?#35748;?#36153;眼球之过?

王?#21363;?#34987;二?#35748;?#21046;消费

2019年,是自称为“为人低调的网红小王”的王?#21363;?#21019;业的
网络职业打假?#20063;?#38142;调查:套路满满 惯用群狼战术索赔

网络职业打假?#20063;?#38142;调

随着网络?#20309;?#20852;起,职业打假人的“战场”也由线下实体店
打卡!5G“黑科技”向市民连展三天

打卡!5G“黑科技”向市

位于亦创国际会展中心的2019世界5G展同时向公众开放,一
美团点评没有对手? 三季度营收275亿元再度盈利

美团点评没有对手? 三

美团点评在本地生活服务领域的前景持续被看好,主要原因
莫让出租二维码 沦为“洗钱”工具

莫让出租二维码 沦为

  原标题:莫让出租二维码 沦为“洗钱”工具张智全只
WeWork裁员2400人:在员工总数中占比近20%

WeWork裁员2400人:在员

共享办公空间创业公司WeWork周四证实,为了削减成本和调
最新文章
Linux下redis的安装与使用图文教程

Linux下redis的安装与

这篇文章主要介绍了Linux下redis的安装与使用,结合图
Redis利用Pipeline加速查询速度的方法

Redis利用Pipeline加

这篇文章主要给大家介绍了关于Redis利用Pipeline加速
谈谈Redis分布式锁的正确实现方法

谈谈Redis分布式锁的

这篇文章主要给大家介绍了关于Redis分布式锁的正确实
window手动操作清理redis缓存的技巧总结

window手动操作清理re

在本篇文章中小编给大家分享了关于window环境手动操作
redis与mongodb的区别总结

redis与mongodb的区别

在本篇文章里小编给大家分享的是关于redis与mongodb的
使用Redis实现延时任务的解决方案

使用Redis实现延时任

这篇文章主要介绍了使用Redis实现延时任务的解决方案,
幸运蛋蛋pc开奖 3d求百位公式 贵州11选5走势图删除 竞彩投注比例误差 七星彩走势图综 凤凰彩票平台有角模式 北京pk10怎么看走势图 股票手续费怎么算 河北11选5 2017竞彩最大奖 江苏体育彩票七位数