Redis数据持久化(详解+样例)

本文详细介绍了Redis的持久化机制,包括RDB和AOF两种方式,以及它们在数据丢失后的恢复功能。此外,文章还探讨了在Docker环境下如何实现Redis数据的持久化,通过数据卷确保即使容器停止,数据也能得到保存。实验部分展示了如何配置和验证RDB和AOF在Docker容器内的持久化效果。
摘要由CSDN通过智能技术生成

一、实验目的

1.了解 Redis 数据库的持久化机制
2.直接使用 Redis 进行持久化操作
3.Docker 下 Redis 的持久化操作

二、Redis持久化

2.1 什么是持久化

关系型数据库持久化:
Mysql:ACID—如何做持久化?
–备份数据文件—数据库(全备(初次)、增量备份)
—日志文件(DBMS系统做)—写操作-命令
原则:先写日志,后写数据库。出现故障后,可利用日志进行恢复,不丢失数据。

2.2 Redis持久化

Redis 的数据存储在内存中,内存是瞬时的,如果系统宕机或重启,又或者 Redis崩溃或重启,所有内存数据都会丢失。为解决这个问题,Redis 提供两种机制对数据进行持久化存储,以便发生故障后能迅速恢复数据。
Redis提供了两种方式:

  • RDB:redis database backup file(redis默认的持久化方式,备份数据) 快照—副本
  • AOF:append of file
    请添加图片描述

三、RDB持久化策略

3.1什么是RDB?

RDB在指定的时间间隔内将内存中的数据集快照写入磁盘。
快照文件成为RDB文件,保存了在某个时间点的全部数据,默认是保存当前运行目录,文件名为dump.rdb。

3.2备份时机

3.3save命令执行RDB

save:前台存储
bgsave:开启子进程,后台存储

四、AOD持久化策略

为解决RDB丢失数据的问题:AOD
Redis每收到一条更新数据时,写到AOF文件中(只记录写操作,不记录读操作)。

五、Docker下Redis数据持久化的实现

5.1 Docker 容器的数据卷

Docker 是将系统与运行的环境打包成容器来运行,当容器删除后,容器里的系统自然也就没有了。但是,在实际的项目中,希望 Docker 容器产生的数据能够持久化,同时容器之间也能够共享数据。Docker 提供了数据卷技术来实现这些需求。数据卷就是目录或文件,存在于一个或多个容器中,由 Docker 挂载到容器上,完全独立于容器的生存周期,Docker 不会在容器删除时删除其挂载的数据卷。即容器删除了,数据卷仍然存在,从而实现了容器数据的持久化。

5.2 实验 :将容器内 Redis 的 RDB 持久化数据保存到容器外的某个路径

创建redis容器,挂载数据卷

docker run -d --name redis_1 -p 6379:6379 -v /d/redis/data:/data redis

在这里插入图片描述
** 使用 redis-cli.exe 连接 redis 容器,写入数据,执行 RDB 操作**
请添加图片描述

** 查看实现宿主机的目录和容器内目录的映射** 请添加图片描述
** 执行以下命令,进入容器内,可以发现 data 路径下也有 dump.rdb 文件**

ls

请添加图片描述
** 暂停redis后再次启动redis_1容器,获取k1**
请添加图片描述

可以发现,可以直接查询到 k1 的值。这说明,虽然 redis_1 停止时,数据丢失了,但是当它重新启动时,读取了“D:\redis\data”里的 dump.rdb 文件,恢复了数据。

5.3 实验 :将容器内 Redis 的 AOF 持久化数据保存到容器外的某个路

** 创建 redis 容器,并挂载数据,使用 redis-cli.exe 连接 redis 容器,写入数据**

docker run -d --name redis_2 -p 6379:6379 -v /d/redis/data:/data redis --appendonly yes

请添加图片描述

** 查看实现宿主机的目录和容器内目录的映射**
请添加图片描述

请添加图片描述
** 执行以下命令,进入容器内,可以发现 data 路径下也有 appendonly.aof文件**
请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值