文档章节

redis的持久化

小王穷遊
 小王穷遊
发布于 2017/08/26 13:49
字数 1084
阅读 3
收藏 0

        为了提高redis的安全性和可靠性,在redis发生故障宕机重启后,还可以尽可能的恢复宕机前的状态。这里,redis提供了两种持久化方式来解决:Redis Database(RDB)Append-only File(AOF)

 

快照持久化

修改redis.conf配置文件:

  1. 采用.rdb文件格式存储
            rdb是非常好的备份和故障恢复方案,快速读写、性能很高。可以实现每小时、每天、每周、每月保存rdb文件。

  2. 创建快照的几种方式
    ♦ BGSAVE命令
        redis服务器调用fork创建一个子进程,然后子进程负责将快照写入硬盘,父进程则继续处理命令请求。
        windows不支持。
    ♦ SAVE命令
        会阻塞redis服务器。不常用,通常只会在没有足够内存去执行BGSAVE命令的情况下、或者即使等待持久化操作执行也无所谓的请下课使用。
        
    save 60 10000
    表示:
    60秒之内有10000次写入,这个条件满足时,redis就会触发BGSAVE命令。
    如果用户设置了多个save,任意一个save满足条件时就会触发BGSAVE命令。
    不推荐SAVE时间间隔小于30秒。
    示例:
    dbfilename dump.rdb     #RDB快照文件名称
    save 900 1      #900s之内有数据库有1次数据改变
    save 300 10     #300s之内有数据库有10次数据被改变
    save 60 10000   #10000s之内有数据库60次数据被改变

    ♦ SHUTDOWN命令
        redis服务器收到SHUTDOWN命令或者标准TERM信号时,会执行一个SAVE命令,然后关闭服务器。
    ♦ 多个redis服务器
        当一个redis服务器连接到另一个redis服务器,并向对方发送SYNC命令执行一次复制操作,如果主服务器目前没有在执行BGSAVE、或者主服务器并非刚执行完BGSAVE,那么主服务器就会执行BGSAVE。
     
  3. 其他配置选项
    ♦ stop-writes-on-bgsave-error:可能值yes或no。如果最新后台保存失败,Redis停止接收写操作。Redis保存成功之后,再次接收写操作。默认为yes。♦ rdbcompression:可能值yes或no。Redis使用LZF压缩RDB文件。默认为yes。♦ rdbchecksum:可能值yes或no。Redis在RDB文件末尾保存一个校验码,在加载RDB文件之前执行校验。如果RDB校验码不匹配,Redis不启动。默认为yes。♦ dbfilename:设置RDB的文件名。默认为dump.rdb。
    ♦ save:不再累述。
    ♦ dir:指定AOF和RDB文件目录。
     
  4. 试用场景
    ♦ 只适用于那些丢失一部分数据也不会造成问题的应用程序。
    ♦ 还要考虑尽可能低降低快照持久化带来的资源消耗。
        对于真实的硬件、VMWare虚拟机或者KVM虚拟机,redis进程每占用一个GB的内存,创建该进程的子进程所需的时间就要增加10~20毫秒;对于Xen虚拟机,根据配置的不同,redis进程每占一个GB的内存,创建该进程的子进程所需的时间就要增加200~300毫秒。
        因此,如果redis进程占用了20GB的内存,那么在标准硬件上运行BGSAVE命令所创建的子进程讲导致redis停顿200~400毫秒;如果是Xen虚拟机,讲停顿4~6秒。
        解决方式:这种情况下,可以使用手动发送BGSAVE或SAVE命令的方式进行持久化;或者使用SAVE命令,速度要快。

AOF持久化

  1. 启动
    (1)命令行
    ./redis-server --appendonly yes

    (2)配置文件

    appendonly yes
    appendfilename "appendonly.aof"
    appendfsync everysec

    其中,appendfsync后面可以跟三个参数:always、everysec、no。
    为了兼顾数据安全和写入性能,用户可以考虑使用 appendfsync everysec

  2. 优化
        BGREWRITEAOF:通过移除AOF文件中的冗余命令来重写AOF文件,使AOF文件的体积变得尽可能地小。
        设置auto-aof-rewrite-percentage选项和auto-aof-rewrite-min-size选项来自动执行BGREWRITEAOF。

  • auto-aof-rewrite-percentage:有效值从0到100。当AOF大小增长指定百分比时,Redis通过隐式调用命令BGREWRITEAOF自动重写AOF日志文件。默认值是100。
  • auto-aof-rewrite-min-size:AOF日志文件最小重写大小。防止AOF重写直到达到指定的AOF文件的最小大小,即使超过了指定的auto-aof-rewrite-percentage值。默认值为67108864字节。

© 著作权归作者所有

小王穷遊
粉丝 10
博文 71
码字总数 24853
作品 0
成都
程序员
私信 提问
redis-持久化

Redis持久化的方式有两种: 一、SnapShotting 快照持久化: 1、持久化的配置: 此持久化默认开启,一次性把Redis中所有数据保存到硬盘中,如果数据非常多(10-20G)就不适合频繁进行该持久化...

lzf05303774
2017/07/28
0
0
(十一)Redis数据库-Redis两种持久化方式:RDB与AOF

版权声明:转载请注明原文地址 https://blog.csdn.net/Super_RD/article/details/89736502 (十一)Redis数据库-Redis两种持久化方式:RDB与AOF 我的系统版本为CentOS7.5,redis版本5.0.4 R...

Super_RD
05/01
0
0
春夏秋冬又一春之Redis持久化

历史文章推荐: 一只准程序猿的唠叨 可能是最漂亮的Spring事务管理详解 Java多线程学习(八)线程池与Executor 框架 面试中关于Redis的问题看这篇就够了 非常感谢《redis实战》真本书,本文大...

snailclimb
2018/06/13
0
0
小蚂蚁学习Redis笔记(11)——Redis重要特性——持久化机制

持久化机制 Redis是一个支持持久化的内存数据库,也就是说Redis需要经常将内存中的数据同步到硬盘来保证持久化。 Redis支持两种持久化机制: snapshooting (快照)也是默认的方式。把数据做...

嗜学如命的小蚂蚁
2015/11/20
0
0
Redis高并发2-redis数据持久化整体说明

redis的持久化,RDB,AOF,区别,各自的特点是什么,适合什么场景 redis的企业级的持久化方案是什么,是用来跟哪些企业级的场景结合起来使用的??? redis持久化的意义,在于故障恢复 比如你...

久违了java
2018/03/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

NIO基于长度域的报文在Netty下的解码

1, 先复习一下粘包/拆包 1.1, 粘包/拆包的含义 TCP是个“流”协议, 并不了解上层业务数据的具体含义, 它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP...

老菜鸟0217
今天
8
0
从零开始搭建spring-cloud(2) ----ribbon

在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。 其实我们已经在上...

Vincent-Duan
今天
19
0
get和post的区别?

doGet:路径传参。效率高,安全性差(get的传送数据量有限制,不能大于2Kb) doPOST:实体传参。效率低,安全性好 建议: 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Pos...

花无谢
昨天
4
0
当谈论迭代器时,我谈些什么?

当谈论迭代器时,我谈些什么? 花下猫语:之前说过,我对于编程语言跟其它学科的融合非常感兴趣,但我还说漏了一点,就是我对于 Python 跟其它编程语言的对比学习,也很感兴趣。所以,我一直...

豌豆花下猫
昨天
14
0
10天学Python直接做项目,我做了这5件事

初学者如何尽快上手python? 市面上关于如何学python的资料很多,但是讲的都太复杂。 我就是很简单的几句话,从小白到开发工程师,我只做了五件事。 我觉得任何商业计划书如果不能用几句话讲...

Python派森
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部