码迷,mamicode.com
首页 > 其他好文 > 详细

Redis持久化方案

时间:2020-02-03 09:25:24      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:需要   实时   保存   说明   缓存机制   snapshot   end   同步   服务器   

                                                                                                                                                         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 不主动进行同步操作,由系统去执行,这个是最快但是最不安全的方式

Redis持久化方案

标签:需要   实时   保存   说明   缓存机制   snapshot   end   同步   服务器   

原文地址:https://www.cnblogs.com/liyalong/p/12254411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!