当前位置: 首页 > news >正文

Redis——Redis.conf详解+Redis持久化(RDB和AOF)+Redis订阅发布

配置文件

redis启动时通过配置文件启动

原生配置文件全文在网上随便搜索一下就能找到了。

单位 

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

 包含

类比import,将其他的配置文件引入

 网络

bind 127.0.0.1            // 绑定ip

protected-mode yes   //是否受保护

port 6379                   //服务端口

通用

daemonize  yes       //以守护进程的方式运行。默认是no,需要自己开启为yes

pidfile   /var/run/redis_6379.pid   //如果以后台方式运行,需要指定一个pid文件

loglevel notice     //日志配置,notice生产环境用

logfile  " "     // 日志的文件位置名。默认输出

databases  16   //数据库的数量,默认16个

always-show-logo yes   //是否总是显示logo

快照  rdb配置

持久化,在规定时间内,执行了多少次操作,则会持久化到文件  .rdb  .aof文件

redis为内存数据库,如果没有,会断电即失

save 900 1    //900s内至少1个key修改了,就进行持久化,下面相同

save 300 10

save 60 10000

stop -writes-on-bgsave-error  yes   //持久化出错后是否继续工作。

rdbcompression  yes    //是否压缩rdb文件,需要小号一些cpu资源

rdbchecksum  yes  //保存rdb文件时进行错误的检查校验

dir ./        //rdb文件保存的目录

REPLICATION  复制

关于主从复制的,

安全

requirepass  123456  //密码设置,默认为空

CLIENTS客户端限制

maxclients  10000  //设置能连接上redis的主义大客户端的数量

memory  management  内存设置

maxmemory  <bytes>  //redis配置最大的内存容量,默认字节

maxmemory-policy noeviction      //内存到达上限之后的处理策略

  • volatile-lru:只对设置了过期时间的key进行LRU(默认值)
  • allkeys-lru : 是从所有key里 删除 不经常使用的key
  • volatile-random:随机删除即将过期key
  • allkeys-random:随机删除
  • volatile-ttl : 删除即将过期的
  • noeviction :    永不过期,返回错误

APPEND ONLY 模式  aof配置

appendonly  no     //默认不开启aof模式,默认是使用rdb方式持久化,在大部分情况下,rdb够用

appendfilename  "appednonly.aof"  //持久化的文件的名字

# appendfsync always     //每次修改都写入

appendfsync everysec    //每秒执行一次 sync   可能会丢失这1s的数据

# appendfsync no           //不同步,不执行sync

RDB持久化

redis是内存数据库,不保存到硬盘中会端点即失

RDB(Redis DataBase)

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

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

rdb保存的文件是dump.rdb         

都是在我们的配置文件快照中进行配置的。 又是生产环境需要进行定时备份。

使用如下命令查找得到dump.rdb的位置在/var/lib/redis/dump.db

find / -name dump.rdb

同样的查询redis.conf文件在/etc/redis/redis.conf中

修改文件中rdb的配置信息如下

 将dump.rdb文件删除之后,在控制台输入save就会重新出现了dump.rdb了

然后在控制台插入5个新数据

 

 然后关闭redis再重新进去redis看见数据还在 

触发机制

1.save的规则满足时,会触发rdb规则

2.执行flushall命令,也会出发rdb规则

3.退出redis,也会产生rdb

4.执行shutdown,也会执行save

根据rdb文件恢复数据

只需要将rdb文件放到对应的目录即可,redis启动时会自动检查dump.rdb并进行恢复

下面是查看dump.rdb位置的方法

 优点和缺点

优点:

1.适合大规模的数据恢复

2.对数据的完整性要求不高

缺点:

1.需要一定的时间间隔,好比save 60 5,在59s时宕机了,则5条数据就没了

2.fork进程时会占用一定的内存空间。

AOF持久化

aof(Append Only File) 

追加文件。

将所有的命令都记录下来,history,恢复的时候就将该文件直接执行一遍。

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

Aof保存的是 appendonly.aof 文件

默认不开启,手动进行配置。只需要将no改为yes即可。

 重启redis即可找到appendonly.aof

和dump.rdb在同一个目录下。

 

 进行两次set然后打开aof文件可以看见两条语句都保存了

 将aof文件破坏之后,是无法重启redis的,redis启动的时候会将appendonly.aof文件和redis-check-rdb文件进行比对,对不上就不允许启动。

 

 如果aof文件有错误,需要修复aof文件。

redis提供了一个工具,使用如下命令

redis-check-aof   --fix appendonly.aof

我这里因为两个文件不再同一个文件夹下所以要加上路径

重新看aof文件发现真就删除了不对劲的数据???/、/、、?? 

如果文件正常,重启即可直接恢复,不正常就会被删除。

 

 优点和缺点

优点

1.每一次修改都同步,文件的完整性会更好。

2.默认美妙同步一次,可能丢失一秒的数据

3.从不同步,效率最高

缺点

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

2.aof运行效率也比rdb慢,所以redis默认持久化就是rdb.

重写规则

如果aof文件大于64mb,会fork一个新的进程将文件进行重写。

aof默认就是无限追加,所以迟早会重写。

 Redis订阅发布

基本没人用的东西,了解即可,实际都是用的消息队列。

Redis 发布订阅(pub/sub)是一种消息通信模式: 发送者(pub)发送消息,订阅者(sub)接收消息。

Redis 客户端可以订阅任意数量的频道。

订阅/发布消息图 :

下图展示了频道 channel1 ,以及订阅这个频道的三个客户端-- client2、dlient5 和 client1 之间的关系 

 

当有新消息通过 PUBLISH 命令发送给频道channel1 时,这个消息就会被发送给订阅它的三个客户端 

 

 命令

 测试

创建一个订阅频道名为beiling

 在一个新的连接里面在频道中发布消息,在原本的频道就能看见

 订阅端

subscribe beiling

发送端

publish beiling  "hello redis"

原理

 

相关文章:

Redis——Redis.conf详解+Redis持久化(RDB和AOF)+Redis订阅发布

配置文件 redis启动时通过配置文件启动 原生配置文件全文在网上随便搜索一下就能找到了。 单位 配置文件 unit单位 对大小写不敏感 包含 类比import&#xff0c;将其他的配置文件引入 网络 bind 127.0.0.1 // 绑定ip protected-mode yes //是否受保护 po…...

16.1.2 Linux 的多用户多任务环境

在 Linux 下面执行一个指令时&#xff0c;系统会将相关的权限、属性、程序码与数据等均载入内存&#xff0c; 并给予这个单元一个程序识别码 &#xff08;PID&#xff09;&#xff0c;最终该指令可以进行的任务则与这个 PID 的权限有关。根据这个说明&#xff0c;我们就可以简单…...

【11】Redis学习笔记 (微软windows版本)【Redis】

注意:官redis方不支持windows版本 只支持linux 此笔记是依托微软开发windows版本学习 一、前言 Redis简介&#xff1a; Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的内存数据结构存储系统&#xff0c;它也被称为数据结构服务器。Redis以键值对&am…...

数据结构刷题训练:用栈实现队列(力扣OJ)

目录 前言 1. 题目&#xff1a;用栈实现队列 2. 思路 3. 分析 3.1 定义 “ 队列 ” 3.2 创建队列 3.3 入队 3.4 队头数据 3.5 出队 3.6 判空和销毁 4.题解 总结 前言 栈和队列是数据结构中的两个重要概念&#xff0c;它们在算法和程序设计中都有着广泛的应用。本文将带你深入了…...

数字化车间mes生产执行管理系统

数字化车间mes是一款基于B/S结构的生产执行管理系统&#xff0c;主要目的是为中小企业提供了高效率、低成本、通用性强的一个MES系统解决方案&#xff0c;能够实时监控当前完成进度。 功能简介&#xff1a; 生产管理 大屏展示&#xff1a;可以从大屏展示页面看到任工序…...

SpringBoot + Mybatis多数据源

一、配置文件 spring: # datasource: # username: root # password: 123456 # url: jdbc:mysql://127.0.0.1:3306/jun01?characterEncodingutf-8&serverTimezoneUTC # driver-class-name: com.mysql.cj.jdbc.Driverdatasource:# 数据源1onedata:jdbc-url: j…...

ad+硬件每日学习十个知识点(35)23.8.15 (接口电路:RS232、RS485、RS422,单线协议UART->TTL)

文章目录 1.RS232的物理层2.RS232的三种连线方式3.DB9和RJ45&#xff08;网口&#xff09;线定义4.RS232的电路设计(tx端需要上拉)5.RS232芯片MAX3221的引脚功能6.什么是压摆率&#xff1f;&#xff08;压摆率越大越好&#xff09;7.为什么有了RS232之后&#xff0c;还需要RS48…...

sql类型-用户定义表类型

一、创建用户定义表类型String_Table_Type CREATE TYPE String_Table_Type AS TABLE ( Id nvarchar(200) NOT NULL ) GO DECLARE test String_Table_Type INSERT INTO test VALUES(a),(b),(c) SELECT * FROM test 二、SqlSugar中使用...

小程序 vant 项目记录总结 使用 scss 分享 订阅消息 wxs 分包 echarts图表 canvas getCurrentPages页面栈

小程序 vant vant 下载 npm init -ynpm i vant/weapp -S --production修改 app.json 将 app.json 中的 “style”: “v2” 去除 修改 project.config.json {..."setting": {..."packNpmManually": true,"packNpmRelationList": [{"p…...

关于Power Query中一些忽略的细节

Power Query中一些忽略的细节 重新认识Power Query查询的引用----提高数据加载效率透视逆透视----一对“好朋友”神奇的拼接----实现很多意想不到的操作 重新认识Power Query 关于它的定义&#xff0c;这里不再赘述&#xff0c;主要说一些新的理解。 Power Query 可以理解就是一…...

QML与C++交互

目录 1 QML获取C的变量值 2 QML获取C创建的自定义对象 3 QML发送信号绑定C端的槽 4 C端发送信号绑定qml端槽 5 C调用QML端函数 1 QML获取C的变量值 QQmlApplicationEngine engine; 全局对象 上下文属性 QQmlApplicationEngine engine; QQmlContext *context1 engine.…...

Microsoft ISA服务器配置及日志分析

Microsoft ISA 分析器工具&#xff0c;可分析 Microsoft ISA 服务器&#xff08;或 Forefront 威胁管理网关服务器&#xff09;的日志并生成安全和流量报告。支持来自 Microsoft ISA 服务器组件的以下日志&#xff1a; 数据包过滤器ISA 服务器防火墙服务ISA 服务器网络代理服务…...

Openlayers 实战 - 地图视野(View)- 图层 -(layer)- 资源(source)显示等级设置。

Openlayers 实战 - 地图视野&#xff08;View&#xff09;- 图层 -&#xff08;layer&#xff09;- 资源&#xff08;source&#xff09;显示等级设置。 问题原因核心代码完整代码&#xff1a;在线示例 在以往的项目维护中&#xff0c;出现一个问题&#xff0c;使用最新高清底图…...

Linux:shell脚本 正则表达式与AWK

一、正则表达式 由一类特殊字符及文本字符所编写的模式&#xff0c;其中有些字符&#xff08;元字符&#xff09;不表示字符字面意义&#xff0c;而表示控制或通配的功能&#xff0c;类似于增强版的通配符功能&#xff0c;但与通配符不同&#xff0c;通配符功能是用来处理文件…...

Android UI自动化测试框架—SoloPi简介

1、UI自动化测试简介 软件测试简介 ​软件测试是伴随着软件开发一同诞生的&#xff0c;随着软件规模大型化&#xff0c;结构复杂化&#xff0c;软件测试也从最初的简单“调试”&#xff0c;发展到当今的自动化测试。 ​ 自动化测试是什么呢&#xff1f;自动化测试是把以人为…...

Android Studio Giraffe 正式版下载地址

Android Studio 是 Android 的官方 IDE。它专为 Android 而打造&#xff0c;可以加快您的开发速度&#xff0c;帮助您为每款 Android 设备构建最高品质的应用。 比以往更快地编码和迭代 Android Studio 基于 IntelliJ IDEA 而构建&#xff0c;可以提供较短的编码和运行工作流…...

【C语言】调试技巧

目录 一、什么是bug? 二、调试 1.一般调试的步骤 2.Debug 和 Release 三、调试环境准备 四、调试时要查看的信息 1.查看临时变量的值 2.查看内存信息 3.查看调用堆栈 4.查看反汇编信息 5.查看寄存器 五、练习 六、常见的coding技巧 七、const的作用 八、编程常见…...

MySQL SUBSTRING_INDEX() 函数的详细介绍

MySQL SUBSTRING_INDEX() 从给定字符串中返回指定数量的分隔符出现之前的子字符串。 当指定数字为正数时从最终分隔符的左侧返回子字符串&#xff0c;当指定数字为负数时从最终分隔符的右侧返回子字符串。 如果指定的次数大于分隔符的出现次数&#xff0c;则返回的子字符串将…...

开源数据库Mysql_DBA运维实战 (DML/DQL语句)

DML/DQL DML INSERT 实现数据的 插入 实例&#xff1a; DELETE 实现数据的 删除 实例&#xff1a; UPDATE 实现数据的 更新 实例1&#xff1a; 实例2&#xff1a; 实例3&#xff1a; DQL DML/DQL DML语句 数据库操纵语言&#xff1a; 插入数据INSERT、删除数据DELE…...

【LangChain】Memory

概要 大多数LLM应用都有对话界面。对话的一个重要组成部分是能够引用对话中先前介绍的信息。至少&#xff0c;对话系统应该能够直接访问过去消息的某些窗口。更复杂的系统需要有一个不断更新的世界模型&#xff0c;这使得它能够执行诸如维护有关实体及其关系的信息之类的事情。…...

智能照明系统:具备认知能力的“光神经网络”

智能照明系统是物联网技术与传统照明深度融合的产物&#xff0c;其本质是通过感知环境、解析需求、自主决策的闭环控制&#xff0c;重构光与人、空间、环境的关系。这一系统由智能光源、多维传感器、边缘计算单元及云端管理平台构成&#xff0c;形成具备认知能力的“光神经网络…...

Android Settings 数据库生成、监听与默认值配置

一、Settings 数据库生成机制​ ​传统数据库生成&#xff08;Android 6.0 前&#xff09;​​ ​路径​&#xff1a;/data/data/com.android.providers.settings/databases/settings.db​创建流程​&#xff1a; ​SQL 脚本初始化​&#xff1a;通过 sqlite 工具创建数据库文件…...

动态生成element-plus的scss变量;SCSS中实现动态颜色变体生成

文章目录 一、动态css变量1.生成内容2.动态生成css变量2.1新增_color-utils.scss&#xff08;不推荐&#xff09;2.2新增_color-utils.scss&#xff08;推荐&#xff09;2.3theme.scss引入使用 一、动态css变量 1.生成内容 在我们修改element-plus主题色时候&#xff0c;会自…...

基于python大数据的水文数据分析可视化系统

博主介绍&#xff1a;高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实实在…...

【Zephyr 系列 14】使用 MCUboot 实现 BLE OTA 升级机制:构建安全可靠的固件分发系统

🧠关键词:Zephyr、MCUboot、OTA 升级、BLE DFU、双分区、Bootloader、安全固件管理 📌面向读者:希望基于 Zephyr 为 BLE 设备加入安全 OTA 升级功能的开发者 📊预计字数:5200+ 字 🧭 前言:为什么你需要 OTA? 随着设备部署数量增多与产品生命周期延长,远程升级(…...

【前端】vue3性能优化方案

以下是Vue 3性能优化的系统性方案&#xff0c;结合核心优化策略与实用技巧&#xff0c;覆盖渲染、响应式、加载、代码等多个维度&#xff1a; ⚙️ 一、渲染优化 精准控制渲染范围 v-if vs v-show&#xff1a; v-if&#xff1a;条件为假时销毁DOM&#xff0c;适合低频切换场景&…...

添加按钮跳转页面并且根据网站的用户状态判断是否显示按钮

现在我们需要的是为页面添加一个按钮&#xff0c;这个按钮是动态的&#xff0c;需要根据网站用户登录过后是否是vip来判断是否显示&#xff0c;然后按钮的效果是跳转到某个页面。 首先我们需要在页面中找到我们需要添加按钮的位置&#xff0c;找到对应的文件&#xff0c;然后比…...

vue-14(使用 ‘router.push‘ 和 ‘router.replace‘ 进行编程导航)

使用 ‘router.push’ 和 ‘router.replace’ 进行编程导航 编程导航是使用 Vue Router 构建动态和交互式 Web 应用程序的一个重要方面。它允许您根据应用程序逻辑、用户作或特定条件控制用户的导航流。您可以使用 router.push 和 router.replace 方法以编程方式导航到不同的路…...

安科瑞防逆流方案落地内蒙古中高绿能光伏项目,筑牢北疆绿电安全防线

一、项目概况 内蒙古阿拉善中高绿能能源分布式光伏项目&#xff0c;位于内蒙古乌斯太镇&#xff0c;装机容量为7MW&#xff0c;采用自发自用、余电不上网模式。 用户配电站为35kV用户站&#xff0c;采用两路电源单母线分段系统。本项目共设置12台35/0.4kV变压器&#xff0c;在…...

发送文件脚本源码版本

V1 适配win10和 win11 #SingleInstance Force SendMode Input SetWorkingDir %A_ScriptDir%; Global variables global TaskList : [] global CurrentFileConfig : "current_file.ini" global RemainingFilesConfig : "remaining_files.ini" global File…...