Redis里面的aof和rdb

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis里面的aof和rdb

Redis里面的持久化:RDB和AOF


关于redis里面的持久化方案有两种:


RDB(Redis DataBase)

AOF(Append Only File)


关于Rdb


这是redis里面默认提供的一套持久化技术方案,专门用于保证内存中的数据被写入到磁盘里面去。主要配置是修改相应的redis.conf来实现


网络异常,图片无法展示
|


redis里面的这一行主要是用于将数据持久化在redis的dump.rdb文件里面,然后每一次开启redis的时候都会将里面的数据重新加载,进行数据恢复。(dump.rdb的存放位置由下边的dir来标识)


网络异常,图片无法展示
|


这一段配置主要是rdb的核心规则配置内容:


save <指定时间间隔> <执行指定次数更新操作> (默认是save 900 1)

举个例子来说:


save m n


也就是说m秒类如果进行了n次操作,就会将数据存储到dump.rdb文件中去。


rdb里面并不是单纯将数据直接存储起来,而是通过一种特定的lzf压缩方式来实现的:


网络异常,图片无法展示
|


这个配置开关最好打开(默认开启),否则会导致rdb文件过大,占用磁盘空间。


触发rdb存储机制的条件:


1.显示执行save指令(但是这是一种阻塞式指令)


网络异常,图片无法展示
|


2.执行flushall指令的时候,清空所有数据


3.执行shutdown指令


4.在指定时间间隔,操作次数达到save配置的数目


通常我们都会对rdb文件做相应的备份处理。


RDB的优缺点


优点:


1.对于一致性,数据完整性要求不高的情况下,这种类型的持久化处理会比较适合


2.适用于大规模的数据恢复


缺点:


1.需要开启一个额外的线程来进行数据存储,会占用内存空间(此时是两倍的内存空间)


2.数据的完整性和一致性不高,如果在最后一次备份的时候宕机了,就会导致部分数据丢失。


接下来我们来演示一段redis里面进行rdb数据恢复的过程


首先我们需要修改rdb的配置信息


[root@idea-centos bin]# vim redis.conf
复制代码


修改内容


save 900 1
    save 120 5
    save 60 10000
[root@idea-centos bin]# ./redis-server redis.conf
[root@idea-centos bin]# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key1 value1
OK
127.0.0.1:6379> set key2 value2
OK
127.0.0.1:6379> set key3 value3
OK
127.0.0.1:6379> set key4 value4
OK
127.0.0.1:6379> set key5 value5
OK
127.0.0.1:6379> set key6 value6
OK
127.0.0.1:6379> SHUTDOWN
not connected> QUIT
[root@idea-centos bin]# cp dump.rdb dump_bk.rdb
[root@idea-centos bin]# ./redis-server redis.conf
[root@idea-centos bin]# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> FLUSHALL 
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> SHUTDOWN
not connected> QUIT
[root@idea-centos bin]# cp dump_bk.rdb  dump.rdb
cp: overwrite `dump.rdb'? y
[root@idea-centos bin]# ./redis-server redis.conf
[root@idea-centos bin]# ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> keys *
1) "key5"
2) "key1"
3) "key3"
4) "key4"
5) "key6"
6) "key2"
复制代码


ps:一般情况下我们很少会用flushall指令和shutdown指令,这里只是为了模拟测试才使用的。


AOF方式持久化


为了弥补rdb的不足之处,数据的不一致性,aof出现了。它是采用日志的形式来将每一次写操作都进行记录,追加到相应的文件中去。Redis重启的时候会根据日志文件的内容从前到后执行一次。


首先我们需要开启appendonly选项


同时还需要指定文件的位置:


除此之外还有相应的aop日志更新条件可以查看:


AOF的快照处理方式:


always:同步持久化,每次发生数据变化会立刻写入到磁盘中。性能较差当数据完整性比较好(慢,安全)


everysec:出厂默认推荐,每秒异步记录一次(默认值)


no:不同步


关于AOF的重写机制


上边在写rdb重写机制的时候有讲到过rdb文件压缩的原理是使用算法将二进制文件进行压缩,而对于AOF来说,aof是采用去除无效命令的方式来进行空间压缩的。


例如说同一个key进行了重复的插入,那么就只保留最后一次插入的数据。


AOF里面出发该机制的条件可以在conf文件里面进行配置:


触发机制:当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。不过一般64m太小了。


重写的原理:


AOF会开启一条后台进程来读取内存中的数据,先写入到一个临时文件里面,然后替换旧有的aof文件。


AOF优缺点:


数据的完整性和一致性会更高

由于aof记录内容过多,文件会不断变大,数据恢复变慢。

目录
相关文章
|
9月前
|
存储 NoSQL 安全
Redis的两种持久化方式---RDB、AOF
通过本文的介绍,我们详细讲解了Redis的两种主要持久化方式:RDB和AOF。每种方式都有其独特的优缺点和适用场景。在实际应用中,可以根据具体需求选择合适的持久化方式,或者同时启用RDB和AOF,以达到最佳效果。希望本文能帮助您更好地理解和应用Redis的持久化机制,构建高效、可靠的数据存储解决方案。
899 79
|
11月前
|
存储 NoSQL Redis
Redis 持久化揭秘:选择 RDB、AOF 还是混合持久化?
Redis 是一个内存数据库,意味着它主要将数据存储在内存中,从而能够提供极高的性能。然而,作为内存数据库,Redis 默认情况下的数据不会永久保存。为了确保数据在重启或故障后能够恢复,Redis 提供了几种 **持久化机制**。这些机制允许 Redis 将内存中的数据保存到硬盘上,从而实现数据持久化。
642 22
Redis 持久化揭秘:选择 RDB、AOF 还是混合持久化?
|
存储 缓存 NoSQL
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
201 2
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
|
监控 NoSQL 测试技术
【赵渝强老师】Redis的AOF数据持久化
Redis 是内存数据库,提供数据持久化功能,支持 RDB 和 AOF 两种方式。AOF 以日志形式记录每个写操作,支持定期重写以压缩文件。默认情况下,AOF 功能关闭,需在 `redis.conf` 中启用。通过 `info` 命令可监控 AOF 状态。AOF 重写功能可有效控制文件大小,避免性能下降。
305 6
|
存储 监控 NoSQL
【赵渝强老师】Redis的RDB数据持久化
Redis 是内存数据库,提供数据持久化功能以防止服务器进程退出导致数据丢失。Redis 支持 RDB 和 AOF 两种持久化方式,其中 RDB 是默认的持久化方式。RDB 通过在指定时间间隔内将内存中的数据快照写入磁盘,确保数据的安全性和恢复能力。RDB 持久化机制包括创建子进程、将数据写入临时文件并替换旧文件等步骤。优点包括适合大规模数据恢复和低数据完整性要求的场景,但也有数据完整性和一致性较低及备份时占用内存的缺点。
443 6
|
存储 缓存 NoSQL
Redis中的rdb和aof
本文深入探讨了Redis的持久化机制,包括RDB和AOF两种方式。详细解释了RDB的工作原理、优势和劣势,以及AOF的实现原理、配置选项、文件重写机制和三种数据同步方式,还介绍了AOF文件修复工具redis-check-aof的使用,并通过实例展示了如何开启和配置AOF持久化方式。
Redis中的rdb和aof
|
存储 缓存 NoSQL
大数据-46 Redis 持久化 RDB AOF 配置参数 混合模式 具体原理 触发方式 优点与缺点
大数据-46 Redis 持久化 RDB AOF 配置参数 混合模式 具体原理 触发方式 优点与缺点
291 1
|
存储 NoSQL Redis
Redis的RDB快照:保障数据持久性的关键机制
Redis的RDB快照:保障数据持久性的关键机制
318 0
|
存储 缓存 NoSQL
深入探究Redis的AOF持久化:保障数据安全与恢复性能的关键机制
深入探究Redis的AOF持久化:保障数据安全与恢复性能的关键机制
264 0
|
NoSQL 关系型数据库 MySQL
Redis持久化机制 RDB 和 AOF 的选择
Redis持久化机制 RDB 和 AOF 的选择
243 0
下一篇
oss云网关配置