4-redis高级-redis持久化(RDB 持久化方案、AOF持久化、RDB和AOF混合持久化)、redis主从复制

1 redis持久化
1.1 RDB 持久化方案
1.2 AOF持久化
1.3 混合持久化

2 redis主从复制

1 redis持久化

# 把redis数据从内存保存到硬盘上的过程称之为持久化

# 所有的数据库,持久化方案
    快照:某时某刻数据的一个完成备份
     -mysql的Dump: mysqldump -uroot -p123456 -luffy >/data/mysqlDump/mydb.sql
     -redis的RDB:
    写日志:任何操作记录日志,要恢复数据,只要把日志重新走一遍即可
      -mysql的 Binlog
      -Redis的 AOF

1.1 RDB 持久化方案

# 三种方案触发rdb

### 方案一:同步方案--》敲save命令---》会阻塞redis--》如果数据量很大--》会导致其他命令都执行不了
reids客户端敲一个命令 : save


### 方案二:异步方案
	reids客户端敲一个命令 : bgsave

###  方案三:配置文件方案---》只要符合条件,会自动生成rdb文件
    save   900        1
    save   300        10
    save   60         10000
    如果60s中改变了1w条数据,自动生成rdb
    如果300s中改变了10条数据,自动生成rdb
    如果900s中改变了1条数据,自动生成rdb

## 最佳配置
save 900 1 
save 300 10 
save 60 10000 
dbfilename dump-6379.rdb  #以端口号作为文件名,可能一台机器上很多reids,不会乱
dir /bigdiskpath #保存路径放到一个大硬盘位置目录
stop-writes-on-bgsave-error yes #出现错误停止
rdbcompression yes #压缩
rdbchecksum yes #校验
    
# 只要在工作目录下有rdb文件,redis重启,就会加载,整个load到内存中

1.2 AOF持久化

# RDB问题
耗时,耗性能,不可控,可能会丢失数据

# aof 方案
客户端每写入一条命令,都记录一条日志,放到日志文件中,如果出现宕机,可以将数据完全恢复

# AOF的三种策略
# 日志不是直接写到硬盘上,而是先放在缓冲区,缓冲区根据一些策略,写到硬盘上
    always:redis–》写命令刷新的缓冲区—》每条命令fsync到硬盘—》AOF文件
    everysec(默认值):redis——》写命令刷新的缓冲区—》每秒把缓冲区fsync到硬盘–》AOF文件
    no:redis——》写命令刷新的缓冲区—》操作系统决定,缓冲区fsync到硬盘–》AOF文件
        
        
#  AOF 重写
	set hello world  
    set hello java                  set hello hehe
    set hello hehe 
    incr counter 
    incr counter   ======>>>        incryby counter 2
    rpush mylist a 
    rpush mylist b                  rpush myslist a b c
    rpush mylist c 
    过期数据
    
   # 本质就是把过期的,无用的,重复的,可以优化的命令,来优化 这样可以减少磁盘占用量,加速恢复速度
   # 咱们只需要做好配置,触发aof重写后,redis会自动开启aof重写,优化 日志
    
   # 配置
    auto-aof-rewrite-min-size	   AOF文件重写需要尺寸
    auto-aof-rewrite-percentage	   AOF文件增长率
    
    
# aof持久化方案 --配置方案
appendonly yes #将该选项设置为yes,打开
appendfilename "appendonly-6379.aof" #文件保存的名字
dir /bigdiskpath #保存路径放到一个大硬盘位置目录
appendfsync everysec #采用第二种策略
no-appendfsync-on-rewrite yes #在aof重写的时候,是否要做aof的append操作,因为aof重写消耗性能,磁盘消耗,正常aof写磁盘有一定的冲突,这段期间的数据,允许丢失

appendonly yes
appendfilename "appendonly-6379.aof"
appendfsync everysec
no-appendfsync-on-rewrite yes

## aof和rdb能同时开启吗?
	完全可以
    
    
# 你们用了那种?
	取决于公司业务:对数据要求高,不允许丢失---》就必须使用aof方案
    如果允许丢失,就使用rdb方案

1.3 混合持久化

# 混合持久化原理
在开启混合持久化的情况下,AOF 重写时会把 Redis 的持久化数据,以 RDB 的格式写入到 AOF 文件的开头,之后的数据再以 AOF 的格式化追加的文件的末尾


# 配置是:
appendonly yes
appendfilename "appendonly-6379.aof"
appendfsync everysec
no-appendfsync-on-rewrite yes
aof-use-rdb-preamble yes #开启了混合持久化

2 redis主从复制

# 主从复制是什么?
机器故障;容量瓶颈;QPS瓶颈---》redis进行扩展---》主从复制---》集群

一主一从,一主多从
做读写分离
做数据副本
扩展数据性能
一个master可以有多个slave
一个slave只能有一个master
数据流向是单向的,从master到slave

# 主从复制原理
1. 副本库通过slaveof 127.0.0.1 6379命令,连接主库,并发送SYNC给主库 
2. 主库收到SYNC,会立即触发BGSAVE,后台保存RDB,发送给副本库
3. 副本库接收后会应用RDB快照
4. 主库会陆续将中间产生的新的操作,保存并发送给副本库
5. 到此,我们主复制集就正常工作了

6. 再此以后,主库只要发生新的操作,都会以命令传播的形式自动发送给副本库.
7. 所有复制相关信息,从info信息中都可以查到.即使重启任何节点,他的主从关系依然都在.
8. 如果发生主从关系断开时,从库数据没有任何损坏,在下次重连之后,从库发送PSYNC给主库
9. 主库只会将从库缺失部分的数据同步给从库应用,达到快速恢复主从的目的

# 主库是否要开启持久化
	如果不开,有可能,主库重启操作,造成所有主从数据丢失!


# 主从搭建
	-两台机器---》只有一台机器---》启动两个redis-server 监听不同端口
    
    -从库辅助配置(可以不配)
    min-slaves-to-write 1
    min-slaves-max-lag 3
    #在从服务器的数量少于1个,或者三个从服务器的延迟(lag)值都大于或等于3秒时,主服务器将拒绝执行写命令
    
    
    -开启两个redis
    
    -从库写
        slaveof 127.0.0.1 6379 #异步
        slaveof no one #取消复制,不会把之前的数据清除
        
    -通过配置文件
    slaveof 127.0.0.1 6379
    slave-read-only yes

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

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

相关文章

SI24R03 高度集成低功耗SOC 2.4G 收发一体芯片

今天给大家介绍一款Soc 2.4G 收发一体模块-SI24R03 Si24R03是一款高度集成的低功耗无线SOC芯片,芯片为QFN32 5x5mm封装,集成了资源丰富的MCU内核与2.4G收发器模块,最低功耗可达1.6uA,极少外围器件,大幅降低系统应用成本…

快速入门FastAPI中的Field参数

快速入门FastAPI中的Field参数 在构建RESTful API时,定义资源模型是至关重要的。FastAPI是一个用于构建API的现代Python web框架,它使用Pydantic库来处理数据验证和模型。在这个过程中,Field 参数起着关键的作用。 本教程将向您介绍如何在F…

企业博客SEO:优化SOP,助您提升搜索引擎可见性

企业博客是互联网时代企业与用户沟通的重要渠道之一,引流成本也比较低。然而,依然有企业会处在3种状态: 1. 有博客,但内容更新不积极或搁置 2. 有博客,但内容散乱 3. 根本就没有博客 如果是这几种状态,…

数据结构与算法(六)分支限界法(Java)

目录 一、简介1.1 定义1.2 知识回顾1.3 两种解空间树1.4 三种分支限界法1.5 回溯法与分支线定法对比1.6 使用步骤 二、经典示例:0-1背包问题2.1 题目2.2 分析1)暴力枚举2)分支限界法 2.3 代码实现1)实现广度优先策略遍历2&#xf…

命令行参数(C语言)

目录 什么是命令行参数 main函数的可执行参数 不传参打印 传参打印 IDE传参 cmd传参 命令行参数的应用(文件拷贝) 什么是命令行参数 概念:命令行参数指的是在运行可执行文件时提供给程序的额外输入信息。它们通常以字符串形式出现&am…

什么是web组态?一文读懂web组态

随着工业4.0的到来,物联网、大数据、人工智能等技术的融合应用,使得工业领域正在经历一场深刻的变革。在这个过程中,web组态技术以其独特的优势,正在逐渐受到越来越多企业的关注和认可。那么,什么是web组态&#xff1f…

2024年SEO策略:如何优化您的知识库?

如今很多人在遇到问题时都会求助于谷歌。谷歌已经成为提供解决方案不可或缺的工具。作为全球搜索引擎的巨头,拥有大量用户流量。这就是为什么确保您的产品和服务在谷歌搜索结果中排名靠前是至关重要的,如果您想获得更多的客户,SEO是一个非常关…

10 大 Mac 数据恢复软件深度评测

对于任何依赖计算机获取重要文件(无论是个人照片还是重要商业文档)的人来说,数据丢失可能是一场噩梦。值得庆幸的是,有多种专门为 Mac 用户提供的数据恢复工具,可以帮助检索丢失或意外删除的文件。在本文中&#xff0c…

C语言搭建项目-学生管理系统(非链表)

、 目录 搭建offer.h文件 搭建offer.c中的main函数 密码登入系统 搭建my_oferr.c中的接口函数 使用帮助菜单接口函数 增加学生信息接口函数 查询学生信息接口函数 删除学生信息接口函数 保存学生信息接口 打开文件fopen 关闭文件fclose 判断是否保存文件fwrite 退出执行文件…

Unity 2022 + Android 接入微信登录

实现Unity接入安卓端的微信登录 分为五个大步骤 生成keystore安卓应用开发者签名在微信开放平台申请移动应用接入编写Java Android部分代码, 生成arr文件编写 Unity C# 代码Unity打apk包, 安装到手机中进行测试 建议按照顺序逐步进行, 1, 2 步如果已经完成, 可直接跳过. 虽然…

HttpComponents: 领域对象的设计

1. HTTP协议 1.1 HTTP请求 HTTP请求由请求头、请求体两部分组成,请求头又分为请求行(request line)和普通的请求头组成。通过浏览器的开发者工具,我们能查看请求和响应的详情。 下面是一个HTTP请求发送的完整内容。 POST https://track.abc.com/v4/tr…

【C#】序列化和反序列化,以及System.Text.Json和Newtonsoft.Json比较

给自己一个目标,然后坚持一段时间,总会有收获和感悟! 序列化和反序列化,在实际项目开发过程中用的最多。特别是有对接接口的小伙伴就深有体会。本篇文章就简单聊聊这个知识点。 目录 一、基本概念1.1、序列化1.2反序列化1.3、举例…

EM32DX-C4【C#】站15

1外观: J301 直流 24V 电源输入 CAN0 CAN0 总线接口 CAN1 CAN1 总线接口 J201 IO 接线段子 S301-1、S301-2 输出口初始电平拨码设置 S301-3~S301-6 模块 CAN ID 站号拨码开关 S301-7 模块波特率拨码设置 S301-8 终端电阻选择开关 2DI: 公共端是: 0V【GND】 6100H …

.NET Core 依赖注入 Microsoft.Extensions.DependencyInjection

文章目录 前言什么是依赖注入C# 使用依赖注入框架介绍 Microsoft.Extensions.DependencyInjectionNuget安装简单单例使用打印结果 自动装配举例自动装配测试用例打印结果自动装配执行顺序测试用例有歧义构造函数渐进式构造函数循环依赖 自动装配结论 手动装配手动注入别名注入 …

修改移远提供的GobiNet、quectel-CM源码,使其支持有方N720 4G模块

最近在研究imx6ull linux下4G模块驱动的移植,参考的移远ec20的移植方法,添加了GobiNet驱动,编译了quectel-CM工具,并且可以正常拨号,分配到ip,如下: ping外网也没有压力,如下…

视频汇聚/音视频流媒体视频平台/视频监控EasyCVR分享页面无法播放,该如何解决?

国标GB28181安防视频监控/视频集中存储/云存储EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统…

分类信息发布小程序效果如何

信息发布系统连接信息供需双方,打造信息聚合平台,用户可获取和发布需求信息、参与互动交流,适用于同城、社区交流、客户互动、业务员/经纪人发布信息场景。 制作分类信息小程序后,商家后台设置信息项,发布者填写内容发…

TQ2440开发板-按键驱动程序设计

目录 按键测试底板原理图核心板原理图使用轮询方式设计按键程序 按键测试底板原理图 TQ2440开发板有4个用户可编程按键,它们直接与CPU的GPIO相连,低电平触发中断,资源占用如下图所示: 核心板原理图 使用轮询方式设计按键程序 按…

mmdetection测试保存到新的文件夹,无需标签

这个是用demo这个代码测试的,需要先训练一个pth文件夹,训练之后再调用pth文件夹进行测试。测试的代码文件名是:image_demo_new.py,代码如系所示: # Copyright (c) OpenMMLab. All rights reserved. import asyncio fr…

uni-app 设置tabBar的setTabBarBadge购物车/消息等角标

目录 一、效果二、代码实现二、全部代码1.index.vue2.cart.vue 三、真实案例参考最后 一、效果 二、代码实现 只要使用uni.setTabBarBadge和uni.removeTabBarBadge来进行对红点的设置和移除。 主要代码: //设置红点 uni.setTabBarBadge({index: 1, // 底部菜单栏…
最新文章