• Redis 持久化


    持久化概念

    持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。

    Redis持久化

    官方说明:http://www.redis.io/topics/persistence

    持久化方式

    RDB (Redis Database) 

    AOF (Append-only File)

    RDB 

    Snapshotting

    By default Redis saves snapshots of the dataset on disk, in a binary file called dump.rdb. You can configure Redis to have it save the dataset every N seconds if there are at least M changes in the dataset, or you can manually call the SAVE or BGSAVE commands.

    For example, this configuration will make Redis automatically dump the dataset to disk every 60 seconds if at least 1000 keys changed:

    save 60 1000

    默认Redis保存数据集快照到硬盘,二进制文件名为dump.rdb。

    保存数据集

    设置

        /etc/redis/6379.conf

    save 900 1
    save 300 10
    save 60 10000

      只要满足一个条件就自动执行,配置文件是异步执行BGSAVE。

    命令

      SAVE -
      summary: Synchronously save the dataset to disk
      since: 1.0.0
      group: server
      BGSAVE -
      summary: Asynchronously save the dataset to disk
      since: 1.0.0
      group: server

    SAVE 同步保存,阻塞Redis其他的命令,执行期间客户端不能接收任何请求,不能在生产环境执行

    BGSAVE 异步保存,非阻塞,通过fork自进程实现。

    恢复数据

    1、获取redis安装目录

    CONFIG GET dir

    2、将dump.rdb文件移动到此目录下。

    3、重启服务。

    AOF

    打开AOF通过修改配置文件:

    appendonly yes

    配置Redis同步数据到硬盘的频率   fsync写文件数据到硬盘

    1、来一条命令进行一次同步 always

    2、每一秒同步一次 (建议,默认的处理方式) everysec

    3、不进行fsync同步    no

    默认配置

    appendfsync everysec

    如果AOF文件毁坏可通过redis-check-aof工具修复

    redis-check-aof  appendonly.aof   修复前要备份文件

    重写可以完成对历史指令的精简,精简AOF文件。

    1、通过BGREWRITEAOF命令触发重写

    2、重写配置:

    auto-aof-rewrite-percentage 100      当AOF文件的增量大于起始大小的100%时,进行AOF文件重写
    auto-aof-rewrite-min-size 64mb       当AOF文件大于64mb的时候,进行AOF文件重写

    默认备份文件存放位置

    /var/lib/redis/6379/appendonly.aof

    /var/lib/redis/6379/dump.rdb

    恢复数据

    1、修改配置文件

    appendonly yes

    2、将appendonly.aof文件放到dir安装目录下。

    3、重启Redis,会自动加载appendonly.aof文件内容。

  • 相关阅读:
    vs2019编译错误:Exception Processing Message 0xc0000005 Parameters...
    error LNK2001
    Debug Assertion Failed
    对路径“………………”的访问被拒绝
    c语言打开文件为什么总是以二进制方式打开
    关于typedef的用法总结
    xml学习第一天
    关于VS2017编译成功系统找不到指定文件.exe的问题
    引入的外部js文件在html文件在浏览器中乱码显示
    结对作业(四则运算)
  • 原文地址:https://www.cnblogs.com/one--way/p/5742180.html
Copyright © 2020-2023  润新知