首页 > 数据库 >【Redis】009-Redis持久化:RDB操作、AOF操作

【Redis】009-Redis持久化:RDB操作、AOF操作

时间:2023-02-24 11:33:44浏览次数:39  
标签:AOF 文件 RDB Redis rdb 客户端


目录

​​一、RDB操作​​

​​1、概述​​

​​2、什么是RDB(Redis Database)​​

​​3、测试RDB​​

​​第一步:修改配置文件,每60秒修改5次就进行持久化操作​​

​​第二步:删除原始的dump.rdb文件​​

​​第三步:启动Redis服务器和客户端,并修改五次数据​​

​​第四步:退出客户端、服务器,并查看​​

​​第五步:重新启动Redis服务器和客户端,进行数据获取​​

​​第六步:使用flushdb(或者flushall)快速产生rdb文件​​

​​4、RDB规则触发机制​​

​​5、如何恢复RDB文件​​

​​6、RDB优缺点​​

​​优点:​​

​​缺点:​​

​​二、AOF操作​​

​​1、概述​​

​​2、什么是AOF​​

​​3、AOF配置​​

​​默认不开启:​​

​​生成文件的名字:​​

​​策略配置:​​

​​重写规则:​​

​​4、测试AOF​​

​​第一步:将appendonly no改为yes​​

​​第二步:启动Redis服务器和客户端,并存一些数据进去​​

​​第三步:关闭客户端和服务器​​

​​第四步:重启服务器和客户端​​

​​第五步:恢复数据​​

​​5、AOF的优缺点​​

​​优点:​​

​​缺点:​​

​​6、Rewrite​​

​​是什么:​​

​​重写原理:​​

​​触发机制:​​

​​三、RDB和AOF的选择​​

​​1、比较​​

​​2、如何选择​​


一、RDB操作

1、概述

Redis是内存数据库,如果不将内存数据库中的数据库保存到磁盘,那么服务器一关机数据就会消失,所以Redis提供了持久化的功能;

 

2、什么是RDB(Redis Database)

【Redis】009-Redis持久化:RDB操作、AOF操作_客户端

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。我们默认的就是RDB,一般情况下不需要修改这个配置!

有时候在生产环境我们会将这个文件进行备份!

rdb保存的文件是dump.rdb 都是在我们的配置文件中快照中进行配置的!

 

3、测试RDB

第一步:修改配置文件,每60秒修改5次就进行持久化操作

【Redis】009-Redis持久化:RDB操作、AOF操作_Redis_02

第二步:删除原始的dump.rdb文件

【Redis】009-Redis持久化:RDB操作、AOF操作_服务器_03

第三步:启动Redis服务器和客户端,并修改五次数据

【Redis】009-Redis持久化:RDB操作、AOF操作_客户端_04

第四步:退出客户端、服务器,并查看

【Redis】009-Redis持久化:RDB操作、AOF操作_redis_05

第五步:重新启动Redis服务器和客户端,进行数据获取

【Redis】009-Redis持久化:RDB操作、AOF操作_redis_06

第六步:使用flushdb(或者flushall)快速产生rdb文件

【Redis】009-Redis持久化:RDB操作、AOF操作_客户端_07

【Redis】009-Redis持久化:RDB操作、AOF操作_服务器_08

 

4、RDB规则触发机制

①save的规则满足的情况下,会自动触发rdb规则;

②执行 flushall 命令,也会触发我们的rdb规则;

③退出redis,也会产生 rdb 文件;

 

5、如何恢复RDB文件

①只需要将rdb文件放在我们redis启动目录就可以,redis启动的时候会自动检查dump.rdb 恢复其中的数据;

②查看需要存在的位置:

127.0.0.1:6379> config get dir
1) "dir"
2) "D:\\MySoft\\Redis-x64-3.2.100" # redis启动的时候会自动检查dump.rdb 恢复其中的数据

几乎就它自己默认的配置就够用了,但是我们还是需要去学习!

 

6、RDB优缺点

优点:

适合大规模的数据恢复;

对数据的完整性要求不高;

缺点:

需要一定的时间间隔,进行操作(可在配置文件自定义规则);

fork进程的时候会占用一定的内存空间;

 

二、AOF操作

1、概述

AOF,Append Only File,将所有命令都记录下来,相当于一个history,恢复的时候将这个文件内保存的命令全部执行一遍;

 

2、什么是AOF

以日志的形式来记录每个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

Aof保存的是 appendonly.aof 文件;

【Redis】009-Redis持久化:RDB操作、AOF操作_Redis_09

 

3、AOF配置

默认不开启:

【Redis】009-Redis持久化:RDB操作、AOF操作_redis_10

生成文件的名字:

【Redis】009-Redis持久化:RDB操作、AOF操作_redis_11

策略配置:

【Redis】009-Redis持久化:RDB操作、AOF操作_redis_12

重写规则:

【Redis】009-Redis持久化:RDB操作、AOF操作_服务器_13

其他省略,一般情况下将appendonly no改为yes,其他保持默认就可以了!

 

4、测试AOF

第一步:将appendonly no改为yes

【Redis】009-Redis持久化:RDB操作、AOF操作_服务器_14

如果未能生成aof文件,可以在客户端进行操作:

(我的学习环境的Windows,狂神的教学环境是Linux)

config set appendonly yes

第二步:启动Redis服务器和客户端,并存一些数据进去

【Redis】009-Redis持久化:RDB操作、AOF操作_服务器_15

第三步:关闭客户端和服务器

【Redis】009-Redis持久化:RDB操作、AOF操作_Redis_16

第四步:重启服务器和客户端

【Redis】009-Redis持久化:RDB操作、AOF操作_redis_17

第五步:恢复数据

【Redis】009-Redis持久化:RDB操作、AOF操作_Redis_18

尴尬了!无法执行!不知道为什么Windows上的exe程序无法直接运行,在Linux上直接运行下面的命令即可:

redis-check-aof --fix appendonly.aof

 

5、AOF的优缺点

优点:

每一次修改都同步,文件的完整会更加好;

每秒同步一次,可能会丢失一秒的数据;

从不同步,效率最高的;

缺点:

相对于数据文件来说,aof远远大于 rdb,修复的速度也比 rdb慢;

Aof 运行效率也要比 rdb 慢,所以我们redis默认的配置就是rdb持久化;

 

6、Rewrite

是什么:

AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制,当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集.可以使用命令bgrewriteaof;

 

重写原理:

AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename),遍历新进程的内存中数据,每条记录有一条的Set语句。重写aof文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,这点和快照有点类似;

 

触发机制:

Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发;

 

三、RDB和AOF的选择

1、比较

绝大多数情况下使用RDB即可!

在主从复制中,RDB就是备用的,备份在从机上面,AOF不使用。。。哈哈哈!

【Redis】009-Redis持久化:RDB操作、AOF操作_Redis_19

 

2、如何选择

一般来说, 如果想达到足以媲美 PostgreSQL 的数据安全性, 你应该同时使用两种持久化功能。

如果你非常关心你的数据, 但仍然可以承受数分钟以内的数据丢失, 那么你可以只使用 RDB 持久化。

有很多用户都只使用 AOF 持久化, 但并不推荐这种方式: 因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比 AOF 恢复的速度要快。

 

 

 

 

 

 

 

 

标签:AOF,文件,RDB,Redis,rdb,客户端
From: https://blog.51cto.com/u_13272819/6083318

相关文章

  • 【Redis】011-Redis主从复制:Redis集群环境搭建、主从复制之复制原理及手动配置主机
    目录​​一、Redis集群环境搭建​​​​1、概念​​​​2、主从复制的作用​​​​3、为什么一般使用多台Redis服务器​​​​4、为什么使用集群​​​​5、环境配置​​​......
  • 873~874 redis概述,下载安装
    Redis:1、概述:redis是一款高性能的NOSQL系列的非关系型数据库;1-1:什么是NOSQLNoSQL(NoSQL=NotOnlySQL),意即“不仅仅是SQL”,是一项全新的数据......
  • redis知识点
    通信协议协议概念:所谓协议其实就是发送和接收双方约定的数据格式而已;类似于加密解密;没有什么神秘;比如http协议,双方约定好格式,如何读取url,取参赛,取请求头......
  • 深入理解跳表及其在Redis中的应用
    前言跳表可以达到和红黑树一样的时间复杂度O(logN),且实现简单,Redis中的有序集合对象的底层数据结构就使用了跳表。其作者威廉·普评价:跳跃链表是在很多应用中有可能替代......
  • Redis入门学习
    认识RedisRedis诞生于2009年全称是RemoteDictionaryServer,远程词典服务器,是一个基于内存的键值型NoSQL数据库。特征:键值(key-value)型,value支持多种不同数据结构,功能丰......
  • arrch架构部署redis,报错: ignore-warnings ARM64-COW-BUG
    做个记录。 arrch架构的redis安装包下载链接:https://pan.baidu.com/s/1TMXNpMvMDWRFD1f5km7MwQ  提取码:36qk 启动redis报错如下:Rediswillnowexittoprev......
  • 以docker方式部署的redis键值查询及清理
     1、首先使用 dockerps 命令来查看正在运行的容器。该命令会列出容器的ID、名称、端口号、状态等信息。也可以使用 dockerps-a 命令来查看所有容器,包括已经停止的......
  • redis分布式锁的实现
    一.正常加锁当两个用户同时注册一个用户名时,为保证用户名不能重复,因此对其注册的用户名加锁。具体步骤:获得用户注册的用户名,进行判断,如果为空则对其进行加锁,保存到数据......
  • redis列表类型 list set&sortedset
    列表类型list可以添加一个元素到列表的头部(左边)或者尾部(右边)1添加1lpushkeyvalue将元素加入列表左表2rpushkeyvalue将元素加入列表右边2获取......
  • redis(1)NoSQL数据库简介
    1.1技术发展redis是用来解决性能问题的数据库技术的分类:解决功能性问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN解决扩展性问题:Struts、Spring、SpringMVC......