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

    为了让数据在电脑重启后数据不丢失,需要将数据已某种形式同步到硬盘中

    支持两种方式持久化 RDB(默认)、AOF

    RDB  快照方式    通过快照(snapshotting)完成  进行快照的条件在用户的配置文件中定义

    有两个参数组成 时间和改动key的个数  当在指定时间内被更改的键的个数大于指定的数值则会进行快照  

    save 900 1

    save 300 10

    save 60 10000

    可以存在多个条件,他们是“或”的关系,禁用自动:注释或者删掉上面的参数就行 ;上面的意思是900秒(15分)内有一个键被更改或者300秒(5分)内有十个键被更改或者60秒内有10000个键被更改则进行快照保存

     默认或保存到当前目录的dump.rdb

    可以通过dir 指定目录

    可以通过dbfilename指定文件名

    注意RDB一旦服务器出现问题则会丢失最后一次快照后的数据,如果数据重要无法承受任何损失则考虑用AOF方式

    AOF:追加日志方式  默认没有开启,一旦开启后没执行一条回更改redis的数据的命令,redis就会将该命令写入硬盘中的AOF文件默认文件名为appendonly.aof 默认目录RDB文件的目录相同

    可以通过appendonly

    appendonly yes

    可以通过dir 指定目录

    可以通过appendfilename指定文件名

    appendfilename appendonly.aof

    自动优化AOF文件,过滤之前被覆盖的冗余命令

    auto-aof-rewrite-percentage 100        当目前的aof文件大小超过上一次重写时的aof文件袋下的百分之100会再次重写
    
    auto-aof-rewrite-min-size 100            限制允许重写的最小aof文件大小

    我们也可以使用bgrewriteaof命名手动执行重写

    在启动reids时会自动逐个执行aof中的命令,载入速度比RDM慢点

    每次执行更改数据库内容的操作时,AOF都会将命令记录在AOF文件,但是由于操作系统的缓存机制,数据并没有真正的写入磁盘,而是进入了系统的银盘缓存。在默认情况下系统没30秒会执行一次同步操作,一边讲缓存中的内容真正的写入硬盘,在这30秒的过程中如果系统异常退出会导致硬盘缓存中的数据丢失,这是aof不能容忍的,这就需要redis写入AOF文件后主动要求系统将缓存内容同步到硬盘中。

    在redis中我们可以通过appendfsync参数配置设置同步的时机:

    #appendfsync always                      每次执行写入都会执行同步
    
    appendfsync everysec  默认            每秒执行一次操作(推荐)
    
    #appendfsync no                             30秒执行一次同步 将硬盘缓存中的数据写入磁盘

    这种只能保证硬盘不损坏,杜绝硬盘损坏后数据不丢失最好的办法就是    (主从)复制

  • 相关阅读:
    python 【第一篇】初识python
    python 【目录】
    python 爬虫必知必会
    MySQL测试代码
    MySQL学习笔记
    pycharm社区版无database 解决方法
    windows python flask上传文件出现IOError: [Errno 13] Permission denied: 'E:\git\test\static\uploads'的解决方法
    ubuntu下python flask环境搭建
    windows下的python flask环境搭建
    Mockito (十四)
  • 原文地址:https://www.cnblogs.com/lichihua/p/9536525.html
Copyright © 2011-2022 走看看