一、实验目的

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文件**

Redis数据持久化(详解+样例)相关推荐

  1. redis数据持久化详解

    一.概念 一)redis提供了不同级别的持久化方式: RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储. AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢 ...

  2. Redis AOF 持久化详解

    来自公众号:程序员历小冰 Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多.但是一旦进程退出,Redis 的数据就会丢失. 为了解决这个问题,Re ...

  3. 转-Redis AOF 持久化详解

    转自: https://juejin.cn/post/6844903902991630349 Redis AOF 持久化详解 Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据 ...

  4. redis php 持久化,详解Redis RDB持久化、AOF持久化,

    详解Redis RDB持久化.AOF持久化, 1.持久化 1.1 持久化简介 持久化(Persistence),持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永 ...

  5. Redis RDB 持久化详解

    来自公众号:程序员历小冰 Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多.但是一旦进程退出,Redis 的数据就会丢失. 为了解决这个问题,Re ...

  6. Redis 事件机制详解

    Redis 采用事件驱动机制来处理大量的网络IO.它并没有使用 libevent 或者 libev 这样的成熟开源方案,而是自己实现一个非常简洁的事件驱动库 ae_event. Redis中的事件驱动 ...

  7. Redis最全详解(一)——基础介绍

    Redis介绍 redis是基于内存可持久化的日志型.Key-Value数据库.redis安装在磁盘,但是数据存储在内存.非关系型数据库NoSql.开源免费,遵守BSD协议,不用关注版权问题. red ...

  8. Redis数据持久化机制AOF原理分析一---转

    http://blog.csdn.net/acceptedxukai/article/details/18136903 http://blog.csdn.net/acceptedxukai/artic ...

  9. nosql----redis持久化详解

    nosql----redis持久化详解 redis持久化的意义在于故障恢复 redis的数据是储存在内存的,假如redis突然down掉,又或者服务器主机突然断电故障.这时候内存里面的数据就会全部丢失 ...

最新文章

  1. 命令行模式下的后向引用替换
  2. Unit01: AJAX 、 AJAX的使用
  3. CMOS图像传感器——SmartSens
  4. android n模拟器,BlueStacks推出Android N模拟器
  5. 力扣904,水果成篮(JavaScript)
  6. 工程数学(数值分析)第四讲:插值逼近
  7. 4k颜色测试软件,BMPC 4K 使用达芬奇LUT 调色测试
  8. 设计模式之单例模式:饿汉模式(懒汉模式)及优缺点分析
  9. Python数据挖掘进阶--泰坦尼克号案例分析
  10. 计算机9针485接口,串口RS232__485的9针引脚定义
  11. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  12. 使用xpath批量爬取堆糖图片
  13. Android 调用第三方地图类App (高德 百度 百度网页版)
  14. 输出今天日期,以yyyy-mm-dd方式输出
  15. 媒体 | 冒志鸿:ArcBlock打造跨链应用平台的思路
  16. linux中的find查找文件或者目录、locate快速定位文件路径
  17. 机器学习----Softmax回归
  18. wireshark解析信令tshark
  19. java实现第四届蓝桥杯好好学习
  20. androidQ集成apk

热门文章

  1. Java----char类型、强制转换
  2. 《硬件仿真(Emulation)EDA工具前端设计流程》
  3. 非金融支付机构大可不必呼喊狼来了
  4. 加拿大己亥猪年生肖邮票亮相 选用猪八戒形象
  5. Openshift Origin开发日记 11-20
  6. 一个Job在OneFlow中的执行过程—下篇
  7. word2007不显示“审阅”选项卡
  8. Java——集合(超详细超级全)
  9. 怎么在布局中调整CAD图纸比例?
  10. 2021阿里云峰会 | 建管用一体化混合云平台,政企数字创新新路径