• 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

     

     

     

  • 相关阅读:
    数组构建完全二叉树
    [.net core学习] .net core中的MD5CryptoServiceProvider取代方法
    [.net core学习] .net core中的MD5CryptoServiceProvider取代方法
    [.net core学习] .net core中的MD5CryptoServiceProvider取代方法
    [.net core学习] .net core中的MD5CryptoServiceProvider取代方法
    交互式访问数据库
    Jackson /常用注解/ annotation
    vue图表组件使用,组件文档echarts
    java8 Optional 容器类
    java8 : Lambda 方法引用
  • 原文地址:https://www.cnblogs.com/520playboy/p/6017414.html
Copyright © 2020-2023  润新知