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,将其他的配置文件引入 网络 bind 127.0.0.1 // 绑定ip protected-mode yes //是否受保护 po…...
16.1.2 Linux 的多用户多任务环境
在 Linux 下面执行一个指令时,系统会将相关的权限、属性、程序码与数据等均载入内存, 并给予这个单元一个程序识别码 (PID),最终该指令可以进行的任务则与这个 PID 的权限有关。根据这个说明,我们就可以简单…...
【11】Redis学习笔记 (微软windows版本)【Redis】
注意:官redis方不支持windows版本 只支持linux 此笔记是依托微软开发windows版本学习 一、前言 Redis简介: Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,它也被称为数据结构服务器。Redis以键值对&am…...
数据结构刷题训练:用栈实现队列(力扣OJ)
目录 前言 1. 题目:用栈实现队列 2. 思路 3. 分析 3.1 定义 “ 队列 ” 3.2 创建队列 3.3 入队 3.4 队头数据 3.5 出队 3.6 判空和销毁 4.题解 总结 前言 栈和队列是数据结构中的两个重要概念,它们在算法和程序设计中都有着广泛的应用。本文将带你深入了…...
数字化车间mes生产执行管理系统
数字化车间mes是一款基于B/S结构的生产执行管理系统,主要目的是为中小企业提供了高效率、低成本、通用性强的一个MES系统解决方案,能够实时监控当前完成进度。 功能简介: 生产管理 大屏展示:可以从大屏展示页面看到任工序…...
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(网口)线定义4.RS232的电路设计(tx端需要上拉)5.RS232芯片MAX3221的引脚功能6.什么是压摆率?(压摆率越大越好)7.为什么有了RS232之后,还需要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 关于它的定义,这里不再赘述,主要说一些新的理解。 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 分析器工具,可分析 Microsoft ISA 服务器(或 Forefront 威胁管理网关服务器)的日志并生成安全和流量报告。支持来自 Microsoft ISA 服务器组件的以下日志: 数据包过滤器ISA 服务器防火墙服务ISA 服务器网络代理服务…...
Openlayers 实战 - 地图视野(View)- 图层 -(layer)- 资源(source)显示等级设置。
Openlayers 实战 - 地图视野(View)- 图层 -(layer)- 资源(source)显示等级设置。 问题原因核心代码完整代码:在线示例 在以往的项目维护中,出现一个问题,使用最新高清底图…...
Linux:shell脚本 正则表达式与AWK
一、正则表达式 由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件…...
Android UI自动化测试框架—SoloPi简介
1、UI自动化测试简介 软件测试简介 软件测试是伴随着软件开发一同诞生的,随着软件规模大型化,结构复杂化,软件测试也从最初的简单“调试”,发展到当今的自动化测试。 自动化测试是什么呢?自动化测试是把以人为…...
Android Studio Giraffe 正式版下载地址
Android Studio 是 Android 的官方 IDE。它专为 Android 而打造,可以加快您的开发速度,帮助您为每款 Android 设备构建最高品质的应用。 比以往更快地编码和迭代 Android Studio 基于 IntelliJ IDEA 而构建,可以提供较短的编码和运行工作流…...
【C语言】调试技巧
目录 一、什么是bug? 二、调试 1.一般调试的步骤 2.Debug 和 Release 三、调试环境准备 四、调试时要查看的信息 1.查看临时变量的值 2.查看内存信息 3.查看调用堆栈 4.查看反汇编信息 5.查看寄存器 五、练习 六、常见的coding技巧 七、const的作用 八、编程常见…...
MySQL SUBSTRING_INDEX() 函数的详细介绍
MySQL SUBSTRING_INDEX() 从给定字符串中返回指定数量的分隔符出现之前的子字符串。 当指定数字为正数时从最终分隔符的左侧返回子字符串,当指定数字为负数时从最终分隔符的右侧返回子字符串。 如果指定的次数大于分隔符的出现次数,则返回的子字符串将…...
开源数据库Mysql_DBA运维实战 (DML/DQL语句)
DML/DQL DML INSERT 实现数据的 插入 实例: DELETE 实现数据的 删除 实例: UPDATE 实现数据的 更新 实例1: 实例2: 实例3: DQL DML/DQL DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELE…...
【LangChain】Memory
概要 大多数LLM应用都有对话界面。对话的一个重要组成部分是能够引用对话中先前介绍的信息。至少,对话系统应该能够直接访问过去消息的某些窗口。更复杂的系统需要有一个不断更新的世界模型,这使得它能够执行诸如维护有关实体及其关系的信息之类的事情。…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
