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"

原理

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP ABAPG开发屏幕自动生成日期的搜索帮助

代码如下&#xff1a; REPORT z_jason_test_f4 . TABLES: s031. PARAMETER p_spmon TYPE spmon DEFAULT sy-datum0(6) OBLIGATORY. SELECT-OPTIONS s_spmon FOR s031-spmon DEFAULT sy-datum0(6) OBLIGATORY. AT SELECTION-SCREEN ON VALUE-REQUEST…

知网G4期刊《高考》简介及投稿要求

知网G4期刊《高考》简介及投稿要求 一、《高考》期刊简介&#xff1a; 主管单位&#xff1a;长春市委宣传部 主办单位&#xff1a;长春出版社 国内刊号22-1372/G4 国际刊号1673-6265 代号12-240 编辑单位&#xff1a;《高考》杂志社 出版周期&#xff1a;旬刊 类 …

无涯教程-Perl - setnetent函数

描述 该函数应在第一次调用getnetent之前调用。 STAYOPEN参数是可选的,在大多数系统上未使用。当getnetent()从网络数据库的下一行检索信息时,setnetent会将枚举设置(或重置)为主机条目集的开头。 语法 以下是此函数的简单语法- setnetent STAYOPEN返回值 此函数不返回任何…

【vue3】对axios进行封装,方便更改路由并且可以改成局域网ip访问(附代码)

对axios封装是在main.js里面进行封装&#xff0c;因为main.js是一个vue项目的入口 步骤&#xff1a; 在1处创建一个axios实例为http&#xff0c;baseURL是基础地址&#xff08;根据自己的需求写&#xff09;&#xff0c;写了这个在vue界面调用后端接口时只用在post请求处写路由…

【前端】vscode javascript 代码片段失效问题解决

1. 文件--首选项--用户代码片段-vue.json : 添加 // { // // Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // // description. Add comma separated ids of the languages where the snippet is app…

探索Perfetto:开源性能追踪工具的未来之光

探索Perfetto&#xff1a;开源性能追踪工具的未来之光 1. 引言 A. 介绍Perfetto的背景和作用 随着移动应用、桌面软件和嵌入式系统的不断发展&#xff0c;软件性能优化变得愈发重要。在这个背景下&#xff0c;Perfetto作为一款开源性能追踪工具&#xff0c;日益引起了开发者…

GraphQL strawberry的使用回顾和体会

GraphQL vs RESTful 简单来说GraphQL 比起 RESTful 集成额外一些功能 出入参校验、序列化 (简化后端编程)自由可选的返回数据字段 (简化一些多余接口开发和沟通联调成本) 这些都是优点了。 开发效率在项目初期是很重要的&#xff0c;需要快速原型化。 但是后期稳定后&#…

Web 拦截器-interceptor

拦截器是一种动态拦截方法调用的机制&#xff0c;类似于过滤器&#xff0c;是Spring框架提出的&#xff0c;用来动态拦截控制器方法的执行。 其作用是拦截请求&#xff0c;在指定方法调用前后&#xff0c;根据业务执行预设代码。 实现步骤 1.定义拦截器&#xff0c;实现Handl…

常用消息中间件介绍

RocketMQ 阿里开源&#xff0c;阿里参照kafka设计的&#xff0c;Java实现 能够保证严格的消息顺序 提供针对消息的过滤功能 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RabbitMQ Erlang实现&#xff0c;非常重量级&#xff0c;更适…

HTTPS代理搭建技巧分享

今天我们来分享一下如何搭建一个能够实现中间人 检测和防护的HTTPS代理。保护我们的网络通信安全是至关重要的&#xff0c;让我们一起学习如何构建一个安全可靠的HTTPS代理吧&#xff01; 什么是中间人 &#xff1f; 首先&#xff0c;让我们来了解一下什么是中间人 。中间人 是…

前端工程化到底是啥?可不止Webpack哦~

前言 什么是前端工程化&#xff0c;是我去年困扰我很久的一个问题&#xff0c;打开搜索引擎一搜&#xff0c;能找到四个关键字&#xff0c;模块化、组件化、规范化、自动化&#xff0c;但一看这几个字&#xff0c;更加迷茫了&#xff0c;没说解决了什么问题。大部分搜出来的都…

C语言刷题训练DAY.7

1.及格分数 解题思路&#xff1a; 这里直接用while语句控制循环&#xff0c;if else语句判断即可。 解题代码&#xff1a; #include<stdio.h> int main() {int a 0;while(scanf("%d", &a) ! EOF){if (a >60)printf("Pass\n");elseprintf…

嵌入式设备应用开发(其他第三方库)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们介绍的qt、boost这些都是通用库。也就是说,不管什么样的场景,这些库都可以拿过来使用。然而在实际开发中还有一些第三方库,它是需要和实际场景联系在一起的。也就是说,…

如何编写一个通用的函数?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 金句分享:…

java云智慧工地管理平台系统源码

智慧工地将“互联网”的理念和技术引入建筑工地&#xff0c;从施工现场源头抓起&#xff0c;最大程度地收集人员、安全、环境、材料等关键业务数据&#xff0c;依托物联网、互联网&#xff0c;建立云端大数据管理平台&#xff0c;形成“端云大数据”的业务体系和新的管理模式&a…

实现简单的element-table的拖拽效果

第一步&#xff0c;先随便创建element表格 <el-table ref"dragTable" :data"tableData" style"width: 100%" border fit highlight-current-row><el-table-column label"日期" width"180"><template slot-sc…

使用 Node.js 生成优化的图像格式

使用 Node.js 生成优化的图像格式 图像是任何 Web 应用程序的重要组成部分&#xff0c;但如果优化不当&#xff0c;它们也可能成为性能问题的主要根源。在本文中&#xff0c;我们将介绍如何使用 Node.js 自动生成优化的图像格式&#xff0c;并以最适合用户浏览器的格式显示它们…

Android Studio 之 Android 中使用 HanLP 进行句子段落的分词处理(包括词的属性处理)的简单整理

Android Studio 之 Android 中使用 HanLP 进行句子段落的分词处理&#xff08;包括词的属性处理&#xff09;的简单整理 目录 Android Studio 之 Android 中使用 HanLP 进行句子段落的分词处理&#xff08;包括词的属性处理&#xff09;的简单整理 一、简单介绍 二、实现原理…

四款源代码扫描工具

一、DMSCA-企业级静态源代码扫描分析服务平台 端玛企业级静态源代码扫描分析服务平台&#xff08;英文简称&#xff1a;DMSCA&#xff09;是一个独特的源代码安全漏洞、质量缺陷和逻辑缺陷扫描分析服务平台。该平台可用于识别、跟踪和修复在源代码中的技术和逻辑上的缺陷&…