zoukankan      html  css  js  c++  java
  • redis持久化配置

    Redis十一个内存数据库,数据时存储在内存中的,因此缓存数据丢失问题一直是程序员们相当关注的话题,因此对缓存中的数据定时进行持久化的必要性就相当突出了,redis提供了两种持久话方案,分别是rdb(redis database)和aof(append od file)

    一、rdb持久化

    redis持久化是redis默认的持久话方案,不许要通过修改redis.conf配置文件来启动,默认redis是会以快照的形式将数据持久化到磁盘的(dump.rdb,这个文件名字可以指定),在配置文件中的格式是:save N M表示在N秒之内,redis至少发生M次修改则redis抓快照到磁盘。当然我们也可以手动执行save或者bgsave(异步)做快照。

    工作原理:

    • Redis forks 一个子进程开始将数据写到临时RDB文件中,当子进程完成写RDB文件,用新文件替换老文件

    1.1 修改配置文件redis.conf, 120秒内对redis进行5修改

    redis.conf配置文件:
    
    1)
    
    #  save ""
    
    save 900 1
    
    save 120 5
    
    save 60 10000
    
    2)
    
    # The filename where to dump the DB
    
    dbfilename dump.rdb   #rdb文件名称配置
    3)
    
    # Note that you must specify a directoryhere, not a file name.
    
    dir ./ #rdb文件路径配置

    二、aof持久化方案

        2.1 简介

            当rdb方法进行持久化方案进行持久化时,当redis突然异常死掉时,最近的数 据会丢失(丢失数据的多少视你save策略的配置),所以这是它最大的缺点,当业务量很大时,丢失的数据是很多的。aof方法可以做到全部数据不丢失,但redis的性能就要差些。AOF就可以做到全程持久化,只需要在配置文件中开启(默认是no),appendonly yes开启AOF之后,redis每执行一个修改数据的命令,都会把它添加到aof文件中,当redis重启时,将会读取AOF文件进行“重放”以恢复到 redis关闭前的最后时刻

       2.2 配置

    AOF文件刷新的方式,有三种,参考配置参数appendfsync :

    appendfsync always         每提交一个修改命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全;

    appendfsync everysec     每秒钟都调用 fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据;

    appendfsync no               依靠OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差。默认并推荐每秒刷新,这样在速度和安全上都做到了兼顾。

    appendonly yes              //启用aof持久化方式
    # appendfsync always        //每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
    appendfsync everysec       //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
    # appendfsync no           //完全依赖os,性能最好,持久化没保证

     2.3.当appendonly.aof损坏

     当 appendonly.aof损坏,导致redis无法启动时,可以通过 ./redis-check-aof --fix appendonly.aof 来恢复appendonly.aof文件,但是有可能会丢失部分数据

     2.4 aof文件重写(压缩)

         在实际生产中,aof往往会特别大,redis提供了对aof进行重写的方案,默认情况下redis会记录上次写aof文件时,aof文件的大小,当aof的文件大小是上次写的时候的两倍,而且aof文件爱你的大小大于64mb时候,就会对aof文件进行重写压缩,默认配置

    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb

     另外还可配置重写aof文件时,是否启动 ppendfsync(时间间隔),按默认配置,为no时就行,保证数据安全性

    no-appendfsync-on-rewrite no

     

     

     

  • 相关阅读:
    iOS开发之字符串去掉首尾空格换行
    iOS开发之截取UIScrollView长图方法、截长图
    iOS开发之语音录制
    iOS开发之程序各种状态监听
    iOS开发之监听应用进入前台后台
    iOS开发之波浪动画效果
    mysql 主从一致性检查
    git 备份和恢复
    tomcat server.xml配置文件 解析
    检查MySQL主从数据一致性
  • 原文地址:https://www.cnblogs.com/520playboy/p/6017414.html
Copyright © 2011-2022 走看看