Redis的两种持久化方式及使用场景分析_第1页
Redis的两种持久化方式及使用场景分析_第2页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Redis的两种持久化式及使场景分析Redis提供的持久化机制,以及好处:Redis提供 RDB 和 AOF 两种持久化机制 , 有了持久化机制我们基本上就可以避免进程异常退出时所造成的数据丢失的问题了,Redis能在下次重启的时候利之间产的持久化件实现数据恢复。、持久化机制之 RDB我们所谓的RDB持久化就是指的讲当前进程的数据成快照存到磁盘中,触发RDB机制分为动触发与动触发动触发 RDBsave命令,但是save命令将会阻塞我们的Redis服务器直到RDB完成,所以真实的环境中般不会使该命令。bgsave命令,使该命令Redis会fork个进程来负责RDB持久化,完成持久化后动结束进程,

2、所以阻塞只发在fork的阶段。动触发 RDB动触发RDB只要在redis的conf 配置件中配置 save相关的配置即可,如 save m n,这就代表在m秒内我们的数据发了n次修改就会使“bgsave”命令动触发RDB,如不需要即#将下图的 save 900 1;save 300 10;save 60 10000 注释即可# save # Will save the DB if both the given number of seconds and the given# number of write operations against the DB occurred.# In the

3、example below the behaviour will be to save:# after 900 sec (15 min) if at least 1 key changed# after 300 sec (5 min) if at least 10 keys changed# after 60 sec if at least 10000 keys changed# Note: you can disable saving completely by commenting out all save lines.# save save 900 1 #9001此修改save 300

4、10 #30010此修改save 60 10000 #6010000此修改RDB注意事项1、若动触发RDB般使bgsave命令,动触发默认使的就是bgsave命令2、执bgsave命令,Redis会判断是否存在正在执 RDB的进程,如果存在了则直接返回3、进程fork完之后,bgsave命令将会返回Backgroud saving started 之后就不再阻塞进程了。4、Redis将RDB件保存在dir配置的指定的录下,并且件名为配置的dbfilename,也可以通过执config set dir dirpath与config set dbfilename 新的件名字# The filena

5、me where to dump the DBdbfilename dump.rdb# above using the dbfilename configuration directive.# The Append Only File will also be created inside this directory.# Note that you must specify a directory here, not a file name.dir /redis_persist/、持久化机制之 AOFAOF持久化是以独的志记录每次写命令,重启Redis的时候再重新执AOF件中命令以达到恢复数

6、据,所以AOF主要就是解决持久化的实时性。、1)、所有的写的命令都会被追加到aof_buf这么个缓冲区中2)、接着AOF缓冲区根据对应的同步策略向磁盘做同步的操作,这说下同步策略,同步策略可以通过修改redis配置件中的参数appendfsync进配置。3)、随着AOF件变,定期对件进重写操作来压缩件4)、Redis服务器重启的时候就会加载AOF件来恢复数据1)、也就是说如果开启了AOF持久化,我们使redis输 set testkey testValue,在AOF的缓冲区就会追加这么条本*3rn$3rnsetrn$7rntestkeyrn$9rntestValuern:6379 set te

7、stkey testValueOK-AOF*3rn$3rnsetrn$7rntestkeyrn$9rntestValuernRedisrn分隔这第代表参数数量$3代表有三个参数 set testkey testValue参数的字节数分别为3 7 9所以翻译出来就是*3testValue2)、接着AOF对缓冲区进同步操作会按照我们配置的如下策略向磁盘进同步redis配置件参数appendfsync说明可配置的值alwayseverysecno配置说明命令写缓冲区后调系统write操作,fsync同步件操作由专门的线程每秒调次命令写缓冲区后调系统write操作,不对AOF件做fsync同步,同步操

8、作由系统负责,最迟30秒同步# no: dont fsync, just let the OS flush the data when it wants. Faster.# always: fsync after every write to the append only log. Slow, Safest.# everysec: fsync only one time every second. Compromise.# More details please check the following article:# /post/redis-persistence-demystified

9、.html# appendfsync alwaysappendfsync everysec# appendfsync no若我们配置的为always,则每次写缓冲区都会同步AOF件,这样会严重影响redis性能,因为普通磁盘Redis持击败TPS写若配置为No,那每次同步AOF件的周期不可控,这样如果还没有进同步,服务就挂了那数据的安全性没法保证了配置为everysec是最佳的同步策略也是redis默认的同步策略,每秒同步次,也就是说就算系统宕机了最多丢失1秒的数据并且性能也没有太影响3)、接着redisr对AOF件进定期的重写操作来压缩件,重写操作也就是只保留写命令忽略delkey hdel

10、key srem key 等,并且将多个命令如 lpush list a lpush list b 合并到起4)、在重启redis再加载持久化件达到恢复数据的的,这有个问题就是AOF和RDB都可以来持久化,那Redis加载持久化件的顺序是怎样的,Redis默认是加载AOF件,如果没有AOF才去加载RDB。三、RDB与AOF优劣势分析优势:RDB只代表某个时间点上的数据快照,所以适于备份与全量复制,如天进备份次。Redis再加载RDB件恢复数据远快于AOF件性能上考虑RDB优于AOF,因为我们保存RDB件只需fork次进程进保存操作,进程没有对磁盘I/O劣势:RDB没办法做到实时的持久化数据,因为fork是重量级别的操作,频繁执成本过RDB需要经常fork进程来保存数据集到磁盘,当数据集较额时候,fork的过程是较耗时的,可能会导致redis在些毫秒级不能响应客服端请求版本的Redis法兼容新版本的RDB件优势:通过配置同步策略基本能够达到实时持久化数据,如配置为everysec,则每秒同步次AOF件,也就是说最多丢失秒钟的数据,兼顾了性能与数据的安全性AOF 件是个只进追加操作的志件(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论