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

     

     

     

  • 相关阅读:
    .NET中使用嵌入的资源
    C#操作注册表
    .Net中大数加减乘除运算
    CYQ.Data 轻量数据层之路 V4.5 版本发布[更好的使用体验,更优的缓存机制]
    关于性能比较的应用误区
    秋色园QBlog技术原理解析:性能优化篇:打印页面SQL,全局的SQL语句优化(十三)
    CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 发布
    框架设计之菜鸟漫漫江湖路系列 一:菜鸟入门
    MySql折腾小记二:text/blog类型不允许设置默认值,不允许存在两个CURRENT_TIMESTAMP
    CYQ.Data.Xml XmlHelper 助你更方便快捷的操作Xml/Html
  • 原文地址:https://www.cnblogs.com/520playboy/p/6017414.html
Copyright © 2011-2022 走看看