(二)Docker安装Redis实战(持久化AOF和RDB快照)

本文详细介绍了Redis的两种持久化机制——RDB快照和AOF日志。RDB是在特定时间点生成数据快照,而AOF则是记录每次写操作,确保数据安全。AOF的写后日志策略兼顾性能与数据安全,但可能造成数据丢失。文章通过实例演示了如何在Redis中开启和关闭AOF持久化,以及RDB的自动保存。最后,讨论了AOF的日志追加、写入和同步策略,以及如何在Redis内部实现AOF存储。
摘要由CSDN通过智能技术生成

正文

  • 为什么需要持久化

Redis是个基于内存的数据库。那服务一旦宕机,内存中的数据将全部丢失。通常的解决方案是从后端数据库恢复这些数据,但后端数据库有性能瓶颈,如果是大数据量的恢复,

1、会对数据库带来巨大的压力

2、数据库的性能不如Redis。导致程序响应慢。所以对Redis来说,实现数据的持久化,避免从后端数据库中恢复数据,是至关重要的。

持久化分为:AOF和RDB快照

RDB快照:RDB 就是 Redis DataBase 的缩写,中文名为快照/内存快照,RDB持久化是把当前进程数据生成快照保存到磁盘上的过程,由于是某一时刻的快照,那么快照中的值要早于或者等于内存中的值。

AOF存储:Redis是“写后”日志,Redis先执行命令,把数据写入内存,然后才记录日志。日志里记录的是Redis收到的每一条命令,这些命令是以文本形式保存。

而AOF日志采用写后日志,即先写内存,后写日志

为什么采用写后日志?

Redis要求高性能,采用写日志有两方面好处:

避免额外的检查开销:Redis 在向 AOF 里面记录日志的时候,并不会先去对这些命令进行语法检查。所以,如果先记日志再执行命令的话,日志中就有可能记录了错误的命令,Redis 在使用日志恢复数据时,就可能会出错。
不会阻塞当前的写操作

但这种方式存在潜在风险:

  • 如果命令执行完成,写日志之前宕机了,会丢失数据。
  • 主线程写磁盘压力大,导致写盘慢,阻塞后续操作。

如何实现AOF 

AOF日志记录Redis的每个写命令,步骤分为:命令追加(append)、文件写入(write)和文件同步(sync)。

命令追加 当AOF持久化功能打开了,服务器在执行完一个写命令之后,会以协议格式将被执行的写命令追加到服务器的 aof_buf 缓冲区。

文件写入和同步 关于何时将 aof_buf 缓冲区的内容写入AOF文件中,Redis提供了三种写回策略:

Always 同步写回:每个写命令执行完,立马同步地将日志写回磁盘;

Everysec 每秒写回:每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,每隔一秒把缓冲区中的内容写入磁盘;

No 操作系统控制的写回:每个写命令执行完,只是先把日志写到AOF文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘。

如何在Redis内实现AOF存储呢!往下看 

1、开启AOF持久化

首先需要在redis-master.conf配置文件内开启持久化存储,然后重启redis-master主节点

1.1验证 Redis AOF 持久化是否开启成功

需要进入 主节点 内写入key value数据

 1.2在AOF内查看key value是否保存成功

需要进入到data目录内,然后找到appendonlydir文件夹里面的后缀为incr.aof的文件,在里面找到sex 和age

 2、关闭AOF持久化

首先需要在redis-master.conf配置文件内关闭持久化存储,然后重启redis-master主节点

 2.1验证 Redis AOF 持久化是否关闭成功

需要进入 主节点 内写入key value数据

 2.2在AOF内查看key value是否保存成功

需要进入到data目录内,然后找到appendonlydir文件夹里面的后缀为incr.aof的文件,是否存在test123 和dcpp456

如何在Redis内实现RDB存储呢!往下看 

备注: RDB存储不需要在配置文件内打开开关之类的

1、进入到 redis-master 容器的根目录下面,找到 dump.rdb 文件。查看该文件,显示为空

2、使用 redis-cli 进行连接,输入密码,写入数据

  3、使用 exit 退出容器后,在根目录下的 dump.rdb 文件内查看数据是否存在

4、就算在容器的data路径内把 dump.rdb 删除掉。重新启动 redis-master 主节点。然后重新进入到容器内查看数据。数据也会存在的。因为 Redis 的数据是存放在内存里面的。

好啦! Redis 的 AOF 和 RDB 持久化已讲解完毕,下一章节讲解 Redis 如何进行数据迁移

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值