Redis 持久化:快照和AOF
来源:互联网 发布:fx2da模块数据 编辑:程序博客网 时间:2024/06/11 00:38
Redis持久化数据到硬盘有那些方法?
方法一:快照(snapshotting),将某一时刻的所有数据写入硬盘中。(注意是:全量更新的)
默认给出的策略是:
#900秒(15分钟)内有一个keys改变
#300秒(5分钟)内有10个keys改变
#60秒(1分钟)内有10000个keys改变
什么时候更新快照?
如果未注释上面的三个快照持久化策略,此时产生快照持久化的情况有:(1)上述三个策略任意一个满足都将持久化文件;(2)执行redis-cli中shutdown操作或者kill redis进程号;上述两种情况都将产生持久化文件。
如果无需快照周期性持久化,只需将三个策略注释掉。(此时,如果执行shutdown或者kill redis进程号也不会将内存的数据持久化到快照文件中)
当然,我们也可以通过显示命令来持久化快照,有两种方式(手动更新快照):(1)在redis客户端redis-cli,执行bgsave;(2)或者执行save;注意:bgsave和save的区别是:bgsave是单独开启一个进程来进行备份,而父进行继续处理命令请求;而save命令会一直阻塞直至快照创建完毕,执行速度比bgsave快的多。方法二:只追加文件(append-only file,AOF),它会将执行写命令时,将被执行的命令复制到AOF文件的末尾,以此来记录数据发生的变化。因此,Redis只要从头到尾执行一次AOF文件包含的所有命令,就可以恢复AOF文件记录的数据。(可能的问题:数据冗余,产生的文件非常大,最多只可能丢失一秒内产生的数据,如果同步频率用:everysec)
开启AOF持久化的
只需要将appendonly默认为no改为yes即可,其文件的位置与快照文件在同一目录下,即上面按个dir的目录。aof持久化后的文件名为appendonly.aof
如果同时开启快照持久化和aop持久化,redis-server启动默认加载的数据库文件是appendonly.aof。
appendfsync选项及同步频率
always:每个Redis写命令都要同步写入硬盘,这样会严重降低Redis的速度
everysec:每秒执行一次同步,显示地将多个写命令同步到硬盘(推荐)
no:让操作系统决定应用何时进行同步
针对AOF持久化文件冗余导致文件过大解决措施
不难从AOF定义可以看出,如果对相同的数据,比如set aa 123,然后再set aa 333,AOF文件中保存了上面两个操作,而实际上只需保存set aa 333即可。
措施一 在redis.conf中配置:
在redis.conf中配置如上参数,那么当AOF文件的体积大于64mb,且AOF文件的体积比上一次重写之后的体积大了至少一倍(100%)的时候,Redis将执行bgrewriteaof命令。
措施二 显示的调用bgrewriteaof:
在redis中提供了重写AOF文件的命令:bgrewriteaof,能够移除AOF中的冗余指令,使得AOF文件尽可能的小。该命令与快照中bgsave相似,都是创建一个子进程来处理的。(重写命令:会产生一个新的重写的文件,并删除旧的aof文件,而删除一个大的AOF文件可能会让系统挂起数秒)。
问题:如果Redsi同时开启快照和AOF持久化,则Redis重启时会去加载那个文件,如果只是AOF文件呢?
答:不管是否开启快照持久化还是AOF持久化:在Redis在首次加载时,会先去查找dum.rdb文件,如果找不到才去找AOF文件。
- Redis 持久化:快照和AOF
- Redis(一)持久化:快照和AOF
- 【Redis缓存机制】9.快照持久化和AOF持久化
- 【Redis缓存机制】9.快照持久化和AOF持久化
- 【Redis缓存机制】9.快照持久化和AOF持久化
- 使用快照和AOF将Redis数据持久化到硬盘中
- redis 快照 RDB和AOF
- Redis AOF持久化
- Redis AOF持久化
- redis持久化--AOF
- Redis 持久化 AOF
- redis 持久化AOF
- Redis-AOF持久化
- 【redis】AOF 持久化
- Redis持久化 Snapshot和AOF说明
- Redis持久化 Snapshot和AOF说明
- redis持久化RDB和AOF
- REDIS持久化RDB和AOF
- javascript简单的正则表达式入门
- Redis INFO详解
- 1106. Lowest Price in Supply Chain(25)
- mysql 插入数据时,出现"\xF0\x9F\x8F\x80"这种情况的处理!
- HTML5 drag和drop的实践
- Redis 持久化:快照和AOF
- Python学习笔记(4)类
- python练习3
- NoSQL概述
- unity 新的网络请求方式,替代www
- Models in TensorFlow from GitHub
- Redis主从复制原理及设置
- 虚拟机的简单介绍及安装
- Unknown error: Unable to build: the file dx.jar was not loaded from the SDK folder!