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

news2025/1/20 14:55:32

配置文件

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"

原理

 

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

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

相关文章

4K/8K 超高清实时处理与分发

// 4K/8K超高清时代的来临对于原有系统带来很多新的挑战&#xff0c;存储、带宽、算力成本的大幅增长也是阻碍超高清推广普及的重要原因。LiveVideoStackCon 2023上海站邀请到了腾讯云音视频的刘兆瑞分享在4K/8K超高清视频在实时编码的过程中遇到的困难以及解决方案。 文/刘兆…

构建高性能小程序:优化技巧和最佳实践

第一章&#xff1a;引言 随着移动互联网的快速发展&#xff0c;小程序成为了用户获取信息和进行业务交流的重要平台之一。然而&#xff0c;小程序由于受限于硬件资源和网络环境&#xff0c;开发者需要更加关注性能优化&#xff0c;以提供流畅、高效的用户体验。本文将介绍一些构…

H5前端外包开发框架排名

以下是一些常见的网页前端开发框架以及它们的排名和特点。请注意&#xff0c;随着时间的推移&#xff0c;框架的排名和特点可能会有所变化。不同的项目和团队对于框架的选择会受到多个因素的影响&#xff0c;包括开发团队的技能、项目的规模和要求、性能需求等。北京木奇移动技…

AE使用(一)

打开AE 点击“新建合成” 注意参数&#xff1a;宽度高度是视频是横屏还是竖屏。发布在抖音上&#xff0c;需要做出来竖屏效果&#xff1b;发布在视频网站中需要做出横屏效果。没用特殊需求&#xff0c;默认参数就行。 导入素材&#xff1a;左键双击“导入素材区”的空白部分。 …

将CNKI知网文献条目导出,并导入到Endnote内

将CNKI知网文献条目导出&#xff0c;并导入到Endnote内 目录 将CNKI知网文献条目导出&#xff0c;并导入到Endnote内一、从知网上导出参考文献二、将知网导出的参考文献导入到Endnote 一、从知网上导出参考文献 从知网上导出参考文献过程和步骤如图1所示。 图1 导出的参考文献…

什么是业务敏捷,如何实现业务敏捷?

点击链接了解详情 作者介绍 前言 随着越来越多行业的企业开始关注敏捷&#xff0c;业务敏捷&#xff08;Business Agility&#xff09;成为一个新的热点。毕竟大部分的行业和组织与软件无关&#xff0c;但是依然要实现业务上的敏捷&#xff0c;所以这个系列会主要谈两点&#…

threejs使用gui改变相机的参数

调节相机远近角度 定义相机的配置&#xff1a; const cameraConfg reactive({ fov: 45 }) gui中加入调节fov的方法 const gui new dat.GUI();const cameraFolder gui.addFolder("相机属性设置");cameraFolder.add(cameraConfg, "fov", 0, 100).name(…

Android中的二级列表-ExpandableListView

Android中的二级下拉列表&#xff0c;类似于某Q的分组&#xff0c;采用ExpandableListView实现&#xff0c;适配器方法如下。 先看效果图&#xff1a;有四个分组&#xff0c;每个分组下都有一些子条目&#xff0c;可以跟着父条目展开而显示 实现代码&#xff1a; 一级列表是一…

基于STM32的超声波雷达

视频地址:1.基于STM32的超声波雷达-演示_哔哩哔哩_bilibili 备注:文档最后有所有文件的网盘地址 1. 项目展示 1.1. 最终效果 1.2. 项目硬件 全部必要硬件(左到右): ST-LINK调试器:调试下载程序stm32f103c8t6核心板1.8寸TFT显示器sg90舵机超声波传感器

题解 | #1002.Shortest path# 2023杭电暑期多校9

1002.Shortest path 签到题 记忆化搜索 题目大意 给定一个正整数 n n n &#xff0c;可以对其进行以下操作&#xff1a; 如果 n n n 能被 3 3 3 整除&#xff0c;则可以使 n n / 3 nn/3 nn/3 ;如果 n n n 能被 2 2 2 整除&#xff0c;则可以使 n n / 2 nn/2 nn/2 …

JavaScript(JavaEE初阶系列13)

目录 前言&#xff1a; 1.初识JavaScript 2.JavaScript的书写形式 2.1行内式 2.2内嵌式 2.3外部式 2.4注释 2.5输入输出 3.语法 3.1变量的使用 3.2基本数据类型 3.3运算符 3.4条件语句 3.5循环语句 3.6数组 3.7函数 3.8对象 3.8.1 对象的创建 4.案例演示 4…

【MyBatis】查询数据库

目录 一、什么是MyBatis 二、MyBatis框架的搭建 1、搭建MyBatis框架 2、设置MyBaits项目的配置 三、使用MyBatis完成数据库的操作 1、MyBatis程序中sql语句的即时执行和预编译 1.1、即时执行&#xff08;${}&#xff09; 1.2、预编译&#xff08;#{}&#xff09; 1.3、即…

多态原理解析

一 多态应用 首先&#xff0c;什么是多态呢?很多概念起初我们都是不理解的&#xff0c;就像我们刚接触继承一样&#xff0c;当学完后发现其实也没那么难&#xff0c;也挺容易理解的。 多态详细点就是多种状态&#xff0c;例如游戏中的抽宝箱&#xff0c;每个人难道都是一样的…

6.文件实现

第四章 文件管理 6.文件实现 ​   连续分配方式&#xff1a;逻辑上相邻的块在物理上也必须相邻&#xff0c;也必须是占有一组连续的块并且依然需要保持这些块之间的相对顺序。 在连续分配方式下为了实现逻辑块号到物理块号之间的映射关系&#xff0c;在文件的目录表中必须记…

JAVA语言:什么是懒加载机制?

JVM没有规定什么时候加载,一般是什么时候使用这个class才会什么时候加载,但是JVM规定了什么时候必须初始化(初始化是第三步、装载、连接、初始化),只要加载之后,那么肯定是要进行初始化的,所以我们就可以通过查看这个类有没有进行初始化,从而判断这个类有没有被加载。 …

文件批量重命名怎么去括号?

文件批量重命名怎么去括号&#xff1f;平时我们一个一个修改文件名称的时候&#xff0c;是不会有括号的。但如果你使用传统的方法来进行文件批量重命名&#xff0c;那么最后得到的文件名是这样的“音频 (数字编号)”&#xff0c;这些文件的名称中会包含一个中文括号。这这个括号…

8.15起 webserver笔记

XShell 远程连接 XFTP 文件传输 VSC远程连接虚拟机&#xff0c;vim编辑器用起来不方便&#xff1a; 查看虚拟机IP地址&#xff1a; MY&#xff1a; 192.168.42.138 VSC每次都要密码&#xff0c;配置免密登录&#xff1a; 在本机命令行生成用户私钥&#xff1a;

JDBC连接数据库(mysql)

准备jar包 官网下载即可&#xff0c;这里提供两个我下载过的jar包&#xff0c;供使用 链接&#xff1a;https://pan.baidu.com/s/1snikBD1kEBaaJnVktLvMdQ?pwdrwwq 提取码&#xff1a;rwwq eclipse导 jar包: 导入成功会有如下所示&#xff1a; ---------------------------…

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

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

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中使用