Redis 配置文件详解 - 持久化(RDB、AOF)

news2024/9/25 15:28:56

目录

Redis 配置文件详解

单位

包含  INCLUDES

网络  NETWORK

通用  GENERAL

快照 SNAPSHOTTING (持久化)

复制 REPLICATION(主从复制) 

安全 SECURITY(账号密码设置)

​编辑 限制 CLIENTS

追加模式 APPEND ONLY MODE 

Redis 持久化

RDB ( Redis DataBase )

什么是RDB呢?

触发机制:

如何恢复rdb文件里面的数据:

RDB持久化的优缺点:

AOF ( Append Only File) 

什么是AOF呢? 

AOF的配置:

测试AOF日志文件的修复:

AOF文件重写规则说明:

AOF持久化的优缺点:

扩展:


Redis 配置文件详解

启动Redis的时候,就通过配置文件来启动

redis-server /usr/local/redis/redis-7.0.11/redis.conf

单位

1、配置文件 unit单位 对大小写不敏感!

包含  INCLUDES

可以导入其他的配置文件,就好比python中导入包import命令一样,只不过是跟c语言导入配置差不多。

网络  NETWORK

bind 127.0.0.1        # 绑定的ip(我们可以设定为0.0.0.0,这样外部的机器也能访问我们的redis数据库了)

protected-mode yes         # 保护模式,目的是保护redis数据库的安全

port 6379                #端口设置,用于发布出去的端口

通用  GENERAL

其中的配置

快照 SNAPSHOTTING (持久化)

进行持久化,在规定的时间内,当执行了多少次操作则会发生持久化,并生成持久化到文件 .rdb文件 和 .aof文件。

对持久化的RDB进行配置的地方

因为redis是内存数据库,如果没有持久化,那么数据断电及失!

其中 save 3600 1 表示如果3600秒内,如果至少有一个 key 进行了修改,我们就进行持久化操作!

在之后我们学习持久化后,会自己定义这个参数!!

其他配置:

复制 REPLICATION(主从复制) 

在搭建主从复制集群的时候使用的配置

安全 SECURITY(账号密码设置)

可以在这里设置redis的密码,默认redis是没有密码的!

 限制 CLIENTS

配置说明:

追加模式 APPEND ONLY MODE 

其他具体的配置,我们在Redis的持久化中去详细讲解配置。

Redis 持久化

Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以Redis提供了持久化功能!

RDB ( Redis DataBase )

什么是RDB呢?

在主从复制的配置中,rdb一般就是当作备用使用的!在从机上面!

什么是RDB呢?

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

实现过程:

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

rdb保存的文件是dump.rdb ,其实它都是在我们redis的配置文件中的快照配置的

下面我们将进行测试:

[root@localhost redis-7.0.11]# ls
00-RELEASENOTES  CODE_OF_CONDUCT.md  COPYING  dump.rdb  Makefile   README.md   redis.conf.bck  runtest          runtest-moduleapi  SECURITY.md    src    TLS.md
BUGS             CONTRIBUTING.md     deps     INSTALL   MANIFESTO  redis.conf  redis.log       runtest-cluster  runtest-sentinel   sentinel.conf  tests  utils
[root@localhost redis-7.0.11]# rm -rf dump.rdb   # 删除持久化文件dump.rdb
[root@localhost redis-7.0.11]# redis-cli
127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> save
OK
127.0.0.1:6379> set k1 v1        # 进行5插入数据次操作
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> set k4 v4
OK
127.0.0.1:6379> set k5 v5
OK
127.0.0.1:6379> exit
[root@localhost redis-7.0.11]# ls          # 发现重新生成了持久化文件dump.rdb
00-RELEASENOTES  CODE_OF_CONDUCT.md  COPYING  dump.rdb  Makefile   README.md   redis.conf.bck  runtest          runtest-moduleapi  SECURITY.md    src    TLS.md
BUGS             CONTRIBUTING.md     deps     INSTALL   MANIFESTO  redis.conf  redis.log       runtest-cluster  runtest-sentinel   sentinel.conf  tests  utils
[root@localhost redis-7.0.11]# 

触发机制:

1、save的规则满足的情况下,会自动触发rdb规则!

2、执行flushall命令,也会触发我们的rdb规则!

3、退出redis数据库,也会产生rdb文件!

备份就自动生成一个dump.rdb,因此有时候我们会在生产环境中对这个文件进行备份!

如何恢复rdb文件里面的数据:

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

2、过程中查看需要存放的位置:

127.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/redis/redis-7.0.11"  # 如果在该目录下存在dump.rdb文件,那么启动就会自动恢复其中的数据
127.0.0.1:6379> 

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

RDB持久化的优缺点:

优点︰
1、适合大规模的数据恢复!

2、对数据的完整性要不高!

缺点∶
1、需要一定的时间间隔进程操作!如果redis意外宕机了,这个最后一次修改数据就没有的了!

2、fork进程的时候,会占用一定的内容空间!!

AOF ( Append Only File) 

将我们的所有命令都记录下来,history,恢复的时候就把这个文件全部在执行一遍!

什么是AOF呢? 

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

AOF保存的是appendonly.aof 文件

AOF的配置:

appendonly no     # 默认是不开启aof模式的,默认是使用rdb方式持久化的,在大部分所有的情况下,rdb完全够用!
appendfilename "appendon1y.aof"    # 持久化的文件的名字

# appendfsync always    # 每次修改都会sync。消耗性能
appendfsync everysec    # 每秒执行一次 sync,可能会丢失这1s的数据!
# appendfsync no        # 不执行sync,这个时候操作系统自己同步数据,速度最快!

默认是不开启的,我们需要手动进行配置!我们只需要将appendonly改为yes就开启了aof !

重启redis,AOF就可以生效了!

测试AOF日志文件的修复:

导入数据

查看appendonly.aof文件内保存的数据

如果这个aof文件有错位,这时候redis是启动不起来的吗,我们需要修复这个aof文件

redis给我们提供了一个工具redis-check-aof --fix

假如我们特意修改 appendonly.aof 文件导致出错呢?我们就可以使用redis-check-aof文件来进行修复。

发现启动失败,我们就使用 redis-check-aof 文件来进行修复

如果aof文件修复后一切正常,重启就可以直接恢复了!         

AOF文件重写规则说明:

aof默认就是文件的无限追加,文件会越来越大!!

如果aof文件大于64m,太大了! fork一个新的进程来将我们的文件进行重写! 

AOF持久化的优缺点:

优点︰
1、每一次修改都同步,文件的完整会更加好!

2、每秒同步一次,可能会丢失一秒的数据!

3、从不同步,效率最高的!
缺点∶
1、相对于数据文件来说,aof远远大于rdb,修复的速度也比 rdb慢!

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

扩展:

1、RPB持久化方式能够在指定的时间间隔内对你的数据进行快照存储。


2、AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以 Redis 协议追加保存每次写的操作到文件末尾,Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。


3、只做缓存,如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化。


4、同时开启两种持久化方式:
     ~ 在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。


     ~ RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件,那要不要只使用AOF呢?作者建议不要,因为RDB更适合用于备份数据库(AOF在不断变化不好备份),快速重启,而且会有AOF可能存在潜在的Bug,留着RDB作为一个万一的手段。

5、性能建议
     ~ 因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save 900 1这条规则。


     ~ 如果Enable AOF(使用AOF),好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了,代价一是带来了持续的IO,二是AOF rewrite的最后将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上,默认超过原大小100%大小的重写可以改到适当的数值。


    ~ 如果不Enable AOF,仅靠Master-Slave Repllcation实现高可用性也可以,能省掉一大笔IO,也减少了rewrite时带来的系统波动。代价是如果Master/Slave同时倒掉(服务器整个断电),会丢失十几分钟的数据,启动脚本也要比较两个Master/Slave 中的RDB文件,载入较新的那个,微博就是这种架构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1014017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis - 超越缓存的多面手

文章目录 Redis 使用场景图解 Redis 使用场景 Redis可以在各种场景中使用 🔹会话 我们可以使用Redis在不同服务之间共享用户会话数据。 🔹缓存 我们可以使用Redis缓存对象或页面,特别是对于热点数据。 🔹分布式锁 我们可以使用…

gin框架再探

Gin框架介绍及使用 | 李文周的博客 (liwenzhou.com) lesson03_gin框架初识_哔哩哔哩_bilibili 1.路由引擎 //路由引擎 rgin.Default() 2.一些http请求方法 get post put delete等等 遇到什么路径,执行什么函数 r.GET("/hello",func{做你想做的事返回…

【Linux】缓冲区/回车换行

1、缓冲区 C程序默认有输出缓冲区。数据输出时,被及时看到,是立马刷新了;如果没被看到,是被暂存在数据缓冲区中。fflush(stdout); 【强制刷新】\n【行刷新,也是一种刷新方式】 2、回车换行 \n【回车换行】输入完一行内…

如何根据性能需求进行场景设计?

场景设计一 探索 测试环境 客户端: win10 这里可以用linux,但没用,因为想直观查看结果。 被测环境:linux X86 4核CPU16G内存 被测接口:登录接口,没有做数据驱动。 在测试执行前,先使用influxSQL把influxdb的数据清理一下,以防影响结果查看。 有这么一个需求,要求系…

docker中安装Ubuntu20,浏览器访问其图形界面

介绍 Kasm(https://kasmweb.com/)是一家提供虚拟化和远程访问解决方案的公司。他们的主要产品是 Kasm Workspaces,它是一个基于浏览器的虚拟桌面和应用程序交付平台。 Kasm Workspaces 基于开源项目 Apache Guacamole 和 Chromium 浏览器引…

python连接mysql数据库的练习

一、导入pandas内置的sqlite3模块,连接的信息:ip地址是本机, 端口号port 是3306, 用户user是root, 密码password是123456, 数据库database是lambda-xiaozhang import pymysql# 打开数据库连接,参数1:主机名或IP;参数…

安装Anaconda与pytorch,在IDEA中配置环境进行编程

1.官网下载与自己python版本匹配的Anaconda(注意,要想成功安装pytorch,python版本也要对应pytorch的相关版本) Anaconda官网最新版本 与自己python版本不否请查找自己版本anaconda版本对应 清华大学镜像下载 2.安装时勾选添加环境变量或者手动添加&am…

Vue.js vs React:哪一个更适合你的项目?

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

红外检漏技术

SF6气体绝缘设备发生泄漏后会造成运行开关闭锁、 内部绝缘击穿, 泄漏到空气中会造成环境污染, 并严重危害现场人员安全。 再加之SF6气体成本高, 频繁补气, 使维护成本增加, 造成经济损失。 红外检漏是依据SF6气体对红外…

SpringBoot如何保证接口安全?

对于互联网来说,只要你系统的接口暴露在外网,就避免不了接口安全问题。如果你的接口在外网裸奔,只要让黑客知道接口的地址和参数就可以调用,那简直就是灾难。 举个例子:你的网站用户注册的时候,需要填写手…

byte buddy字节码增强——输出方法执行时间

目标&#xff1a; 输出各函数执行时间 引包 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

Vue Router入门:为Vue.js应用添加导航

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Vue.js新手指南:从零开始建立你的第一个应用

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

在SpringBoot项目中整合SpringSession,基于Redis实现对Session的管理和事件监听

1、SpringSession简介 SpringSession是基于Spring框架的Session管理解决方案。它基于标准的Servlet容器API&#xff0c;提供了Session的分布式管理解决方案&#xff0c;支持把Session存储在多种场景下&#xff0c;比如内存、MongoDB、Redis等&#xff0c;并且能够快速集成到Spr…

C++之operator=与operator==用法区别(二百一十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

宝塔面板日志和缓存占用磁盘空间很大,如何清理?

服务器使用的宝塔面板&#xff0c;最近发现服务器的“系统盘”快爆满了&#xff0c;点面板上日志管理都要收费&#xff0c;我也不是很懂服务器的运维&#xff0c;使用ai进行询问&#xff0c;得到了解决&#xff1a; /var/log 日志目录 运行下面的命令查找是哪些目录占用空间很…

解决vue项目导出当前页Table为Excel

解决vue项目中导出当前页表格为Excel表格的方案 用到的技术&#xff1a; Vue2Element-uifile-saverxlsx 1、创建vue项目&#xff0c;安装element-ui 2、创建一个组件&#xff0c;组件内放入表格&#xff0c;和导出按钮 <template><div><!-- 导出的按钮 -->…

阿里云交互式建模(PAI-DSW)训练并微调推理ChatGLM模型

参考内容为《轻量微调和推理ChatGLM模型实践》 点击“交互式建模&#xff08;DSW&#xff09;”&#xff0c;然后选择“创建实例” 写上实例名称&#xff0c;然后选择GPU规格&#xff0c;选择“ecs.gn6v-c8g1.2xlarge(8 vCPU&#xff0c;32GB)” 页面往下拉选择“pytorch:…

嵌入式-数据进制之间的转换

目录 一.简介 1.1十进制 1.2二进制 1.3八进制 1.4十六进制 二.进制转换 2.1二进制-十进制转换 2.2八进制-十进制转换 2.3十六进制-十进制转换 2.4十进制-二进制转换 2.5十进制-八进制转换 2.6十进制-十六进制转换 2.7小数部分转换 一.简介 被传入到计算机的数据要…

在macOS使用VMware踩过的坑

目录 MAC提示将对您的电脑造成伤害/MAC OS 升级到10.15.3后vmware虚拟机黑屏 mac系统下&#xff0c;vm虚拟机提示打不开/dev/vmmon mac VMware Workstation 在此主机上不支持嵌套虚拟化 mac VMware清理虚拟机空间 VMware Fusion 13在M2芯片的Mac上安装 Windows 11 首先需…