美文网首页Redis
Redis 数据持久化

Redis 数据持久化

作者: mashen | 来源:发表于2017-07-25 17:47 被阅读0次

    ** 数据持久化 **

    Redis 是基于内存的数据库,内存数据库有个严重的弊端:突然宕机或断电时,内存的数据不会保存。
    为了解决这个问题,Redis 提供两种持久化方式:内存快照 和 日志追加

    内存快照 ( RDB )

    如何开启内存快照?
    内存快照优先级低于日志追加 需关闭日志追加功能

    配置文件 redis.conf

    // 设置为no   ( 关闭日志追加 )
    appendonly no
    
    // 设置生成快照频率
    save 900 1
    save 300 10
    save 60 10000
    
    // 900秒内数据更改1次就进行内存快照操作
    // 300秒内数据更改过10次
    // 60秒内数据更改了10000次
    // 当多个条件中成立一个 Redis都进行一次内存快照操作
    

    如果有数据更改都还未满足其中任何一个条件则不会生成快照
    也可通过 SAVEBGSAVE 命令手动生成快照
    save 阻塞 Redis主进程,直到保存完成为止。在主进程阻塞期间,服务器不能处理客户端的任何请求。
    bgsave 生成一个子进程,子进程负责生成快照,并在保存完成之后向主进程发送信号,所以不会阻塞主进程不影响主进程处理请求工作

    内存快照每次都把内存数据完整地写入硬盘,而不是只写增量数据
    所以如果数据量大,写入操作比较频繁,会严重影响性能

    内存快照方式是将内存中的数据以快照方式写入二进制文件中
    下次redis重新时自动读取二进制文件来恢复数据

    配置文件 redis.conf

    // 设置保存的二进制文件名称
    dbfilename dump.rdb
    
    // 设置保存的二进制文件存放目录
    dir ../../../Cache/Redis
    

    ** 日志追加 ( AOF )**

    通过二进制日志 日志中记录了所有增删改操作 通过write函数追加到文件尾部

    配置文件 redis.conf

    // 开启aof日志
    appendonly yes
    
    // 设置日志文件名 ( 存放路径和RDB相同 )
    appendfilename "appendonly.aof"
    
    // 设置同步的频率
    appendfsync always | everysrc | no
    
    // always   : 每次收到增加修改命令立刻强制写入硬盘
    // everysrc : 每秒强制写入一次
    // no       : 不强制写入 完全依赖操作系统  ( 大概30秒会强制写入一次 )
    

    相关文章

      网友评论

        本文标题:Redis 数据持久化

        本文链接:https://www.haomeiwen.com/subject/drfgkxtx.html