• Redis持久化方案


                                                                                                                                                             Redis持久化方案

    Reid是一个内存数据库,为了保证数据库的持久性,它提供两种持久化方案:

    RDB方式(默认)

    ADF方式

    1.RDB方式

    介绍

    RDB是Redis默认采用的持久化方式

    RDB方式是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘。

    Redis会在指定的情况下触发快照

    1.符合自定义配置的快照规则

    2.执行save或者bgsave命令

    3.执行flushall命令

    4.执行主从复制操作

    在redis.conf中设置自定义快照规则

    1.2.RDB持久化条件

    格式:SAVE<SECONDS><CHANGES>

    示例:

    save 900 1 : 表示15分钟(900秒钟)内至少一个键被更改则进行快照

    save 300 10 : 表示5分钟(300秒)内至少10个键被更改则进行快照

    save 60 10000:表示1分钟内至少10000个键被更改则进行快

    可以配置多个条件(每行配置一个条件),每个条件之间是"或"的关系 

    1.3.配置dirzhidingrdb快照文件的位置

     特别说明:

    Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存,

    根据数据量大小与结构和服务器性能不同,这个时间也不同,通常将记录一千万个字符串类型键,大小为1GB的快照文件载入到内存中需要花费20-30秒钟

    1.4.快照的实现原理

    快照过程

    1.4.1.redis使用fork寒素复制一份当前进程的副本(子进程)

    1.4.2.父进程继续接受并处理客户端发来的命令,而子进程开始将

    内存中的数据写入硬盘中的临时文件。

    1.4.3.当子进程写入所有数据后会用该临时文件替换旧的 RDB

    文件,至此,一次快照操作完成.

    注意事项:

    1.redis在进行快照的过程中不会修改RDB文件,只有快照结束后才会将旧的文件替换成新的,也就是说任何时候RDB文件都是完成的

    2.这就使得我们可以通过定时备份RDB文件来实现redis数据库的备份,RDB文件经过压缩的二进制文件,占用的空间会小于内存中的数据,更加利于传输

    2.AOF方式

    2.1介绍

    默认情况下Redis没有开启AOF(append only file)方式的持久化

    开启ADF持久化后每一条会更改Redis中的数据命令,Redis就会将该命令写入硬盘中的ADF文件,这一过程显然会减低redis的性能,但大部分情况下这个影响是能够接受的,另外使用较快的硬盘可以提高ADF的性能。

    可以通过修改redis.conf配置文件中的appenly参数开启

    appendonly yes

     ADF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的

    dir./

    默认的文件名是appendonly.conf,可以通过appendfilename参数修改

    appendfiename appenly.aof

    2.2.AOF重写原理

    Redis可以在AOF文件体积变大得过时,自动在后台对AOF进行重写

    重写后的新ADF文件包含了恢复当前数据集说需要的最小命令集合

    整个重写操作是绝对安全的,因为Redis在创建新ADF的过程中,会继续

    将命令追加到现有的ADF文件里面,及时重写过程中发生停机,现有的ADF文件也不会

    丢失。而一旦新ADF文件创建完毕,Redis就会从旧ADF文件换到新ADF文件,并且对新

    ADF文件进行追加操作。

    ADF文件有序地保存了对数据库执行的所有写入操作,这些写入操作以Redis协议的格式

    保存,因此ADF文件的内容非常容易被人读懂,对文件进行分析(parse)

     参数说明

    auto-aof-rewrite-percentage 100表示当前aof文件大小超过上一次文件大小

    的百分之多少的时候会进行重写,如果之前没有重写过,表示当前aof文件大小为准

    auto-aof-rewriter-min-size 64mb 限制允许重写最小aof文件大小,也就是文化大小小于64mb的时候,不需要进行优化

     3.同步磁盘数据

    Redis每次更改数据的时候,aof机制都会将命令记录到aof文件,但是实际上由于操作系统的缓存机制

    数据并没有实时写入到硬盘,而是进入硬盘缓存,再通过缓存机制去刷新保存到文件

    参数说明:

    appendfsync always 每次执行写入都会进行同步,这是最安全但是效率比较低的方式

    appendfsync everysec 每一秒执行

    appendfsync no 不主动进行同步操作,由系统去执行,这个是最快但是最不安全的方式

  • 相关阅读:
    SpringBoot:第五篇 CommandLineRunner
    多列单个索引和联合索引的区别
    数据库从0到0.1 (一): LSM-Tree VS B-Tree
    SpringBoot:第四篇 集成Guava(本地缓存+分布式缓存)
    SpringBoot:第三篇 配置修改
    TSINGSEE青犀视频编译WebRTC Android版报错The only supported distros are xxxxxxx处理方式
    TSINGSEE青犀视频开发WebRTC视频推流播放平台前端获取视频流列表错误是什么原因?
    如何修改TSINGSEE青犀视频开发的多平台支持视频RTSPServer组件EasyRTSPServer-win的端口号?
    视频RTSPServer组件EasyRTSPServer-win测试视频无法拉取到流在VLC播放如何修复?
    TSINGSEE青犀视频开发EasyWasmPlayer H265播放器是如何实现视频截图功能的?
  • 原文地址:https://www.cnblogs.com/liyalong/p/12254411.html
Copyright © 2020-2023  润新知