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"

原理

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【调整奇数偶数顺序】

调整奇数偶数顺序 1.题目 输入一个整数数组&#xff0c;实现一个函数&#xff0c; 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分&#xff0c; 所有偶数位于数组的后半部分。 2.题目分析 这道题首先用到的方法是冒泡排序的思想&#xff0c;首先通过冒泡排序…

Prometheus的搭建与使用

一、安装Prometheus 官网下载地址&#xff1a;Download | Prometheus 解压&#xff1a;tar -zxvf prometheus-2.19.2.linux-amd64.tar.gz重命名&#xff1a; mv prometheus-2.19.2.linux-amd64 /home/prometheus进入对应目录&#xff1a; cd /home/prometheus查看配置文件&am…

微服务与Nacos概述-5

引入OpenFeign 添加依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>com.alibaba.cloud</groupId>…

【Windows 常用工具系列 8 -- 修改鼠标光标(指针)大小和颜色的快速方法方法】

文章目录 修改方法 上篇文章&#xff1a;Windows 常用工具系列 7 – 禁用win10自带的微软输入法 修改方法 Win键 i 快捷键进入设置页面&#xff0c;然后输入光标... 就会跳出修改鼠标大小与光标颜色的选项。 Win键是在计算机键盘左下角Ctrl和Alt键之间的按键 根据自己的需求…

浏览器 - 事件循环机制详解

目录 1&#xff0c;浏览器进程模型进程线程浏览器的进程和线程1&#xff0c;浏览器进程2&#xff0c;网络进程3&#xff0c;渲染进程 2&#xff0c;渲染主线程事件循环异步同步 JS 为什么会阻塞渲染任务优先级 3&#xff0c;常见面试题1&#xff0c;如何理解 js 的异步2&#x…

210、仿真-基于51单片机灭火小车超声波避障温度烟雾控制报警Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&a…

java面试题(16):Mysql一致性视图是啥时候建立的

1 演示错误案例 先给大家来一个错误演示。 我们打开两个会话窗口&#xff0c;默认情况下隔离级别是可重复读&#xff0c;我们来看下&#xff1a; 首先在 A 会话中查看当前 user 表&#xff0c;查看完成后开启事务&#xff1a; 可以看到id3的数据sex是男。 接下来在 B 会话中…

全面梳理Python下的NLP 库

一、说明 Python 对自然语言处理库有丰富的支持。从文本处理、标记化文本并确定其引理开始&#xff0c;到句法分析、解析文本并分配句法角色&#xff0c;再到语义处理&#xff0c;例如识别命名实体、情感分析和文档分类&#xff0c;一切都由至少一个库提供。那么&#xff0c;你…

LeetCode ACM模式——二叉树篇(二)

刷题顺序及思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 二叉树的定义及创建见&#xff1a; LeetCode ACM模式——二叉树篇&#xff08;一&#xff09;_要向着光的博客-CSDN博客 目录 102. 二叉树的层序遍历 利用队列 利用递归 10…

R语言生存分析(机器学习)(1)——GBM(梯度提升机)

GBM是一种集成学习算法&#xff0c;它结合了多个弱学习器&#xff08;通常是决策树&#xff09;来构建一个强大的预测模型。GBM使用“Boosting”的技术来训练弱学习器&#xff0c;这种技术是一个迭代的过程&#xff0c;每一轮都会关注之前轮次中预测效果较差的样本&#xff0c;…

opencv进阶01-直方图的应用及示例cv2.calcHist()

直方图是什么&#xff1f; 直方图是一种图形表示方法&#xff0c;用于显示数据中各个数值或数值范围的分布情况。它将数据划分为一系列的区间&#xff08;也称为“箱子”或“bin”&#xff09;&#xff0c;然后统计每个区间中数据出现的频次&#xff08;或频率&#xff09;。直…

Floyd(多源汇最短路)

Floyd求最短路 给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。 再给定 k 个询问&#xff0c;每个询问包含两个整数 x 和 y&#xff0c;表示查询从点 x 到点 y 的最短距离&#xff0c;如果路径不存在&#xff0c;则输出 impo…

rabbitmq的持久化

目录 队列实现持久化 如何删除队列​编辑 消息实现持久化 不公平分发 如何保障当 RabbitMQ 服务停掉以后消息生产者发送过来的消息不丢失。默认情况下 RabbitMQ 退出或由于某种原因崩溃时&#xff0c;它忽视队列和消息&#xff0c;除非告知它不要这样做。确保消息不会丢失需…

桂林小程序https证书

现在很多APP都相继推出了小程序&#xff0c;比如微信小程序、百度小程序等&#xff0c;这些小程序的功能也越来越复杂&#xff0c;不可避免的和网站一样会传输数据&#xff0c;因此小程序想要上线就要保证信息传输的安全性&#xff0c;也就是说各种类型的小程序也需要部署https…

SAP MM学习笔记24-以评估收货(评价)和非评估收货(非评价)

SAP 中 有评价入库&#xff08;评估收货&#xff09;和非评价入库&#xff08;非评估收货&#xff09;两种入库方式。 一般来说在库品目会采用评价入库&#xff0c;而消费品目&#xff0c;会采用非评价入库。 其实评价入库&#xff0c;非评价入库对外都无所谓的&#xff0c;人…

计算机竞赛 python+opencv+机器学习车牌识别

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于机器学习的车牌识别系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;3分 该项目较为新颖&#xff0c;适…

HTTP 协议的基本格式和 fiddler 的用法

目录 一. HTTP 协议 1. HTTP协议是什么 2. HTTP协议的基本格式 HTTP请求 首行 GET和POST方法&#xff1a; 其他方法 经典面试题&#xff1a; URL Header(请求报头)部分 空行 ​HTTP响应 状态码总结: 二、Fiddler的用法 1.Fidder的安装 2.Fidder的使用 一. HTTP 协议 1. H…

日常BUG——普通页面跳转tabbar页面报错

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 微信小程序页面跳转的时候出现下面的问题&#xff1a; wx.redirectTo({url: /pages/index/i…

java 使用log4j显示到界面和文件 并格式化

1.下载log4j jar包https://dlcdn.apache.org/logging/log4j/2.20.0/apache-log4j-2.20.0-bin.zip 2. 我只要到核心包 &#xff0c;看需要 sources是源码包&#xff0c;可以看到说明。在IDEA里先加入class jar后&#xff0c;再双击这个class jar包或或右键选Navigate ,Add ,…

【贪心】CF1779 D

不会1700 Problem - 1779D - Codeforces 题意&#xff1a; 思路&#xff1a; 首先手推样例&#xff0c;可以发现一些零碎的性质&#xff1a; 然后考虑如何去计算贡献 难点在于&#xff0c;当一个区间的两端是区间max时&#xff0c;怎么去计算贡献 事实上&#xff0c;只需要…