Redis(三)

文章目录

  • 一、单节点Redis的问题
    • (一)数据丢失
    • (二)并发能力问题
    • (三)存储能力问题
    • (四)故障恢复问题
  • 二、Redis持久化
    • (一)RDB
      • 1、RDB是什么
      • 2、rdb配置
      • 3、手动触发RDB
      • 4、RDB原理
    • (二)AOF
      • 1、AOF是什么
      • 2、开启AOF
      • 3、AOF持久化流程
      • 4、Rewrite压缩
    • (三)RDB vs AOF
  • 三、Redis主从集群读写分离
    • (一)搭建主从架构
    • (二)主从同步原理
      • 全量同步
      • 增量同步
      • 同步优化
      • 总结
  • 四、Redis哨兵
    • (一)、哨兵的作用和原理
      • 1、哨兵的作用
      • 2、哨兵原理
    • (二)、搭建哨兵集群
    • (三)、RedisTemplate哨兵模式
  • 五、分片集群
    • (一)、搭建分片集群
    • (二)、散列插槽
    • (三)、集群伸缩
    • (四)、故障转移
    • (五)、RedisTemplate访问分片集群


一、单节点Redis的问题

(一)数据丢失

解决方案:实现Redis数据持久化

(二)并发能力问题

解决方案:搭建主从集群,实现读写分离

(三)存储能力问题

解决方案:搭建分片集群,利用插槽机制实现动态扩容

(四)故障恢复问题

解决方案:利用哨兵,实现健康检测和自动恢复

二、Redis持久化

(一)RDB

1、RDB是什么

RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。
redis停机时会执行一次RDB。

2、rdb配置

Redis内部有触发机制,可以在redis.conf文件中找到,格式如下:

#900秒内,如果至少有一个key被修改,则执行bgsave,如果是save “” 则表示禁用RDB
save 900 1
save 300 10
save 60 10000
# save: 设置快照的触发条件,格式为:save <seconds> <changes>
# 其中seconds表示指定时间间隔内的秒数,changes表示指定修改数量内的次数。
# 当满足其中一个条件时,Redis 就会进行快照。stop-writes-on-bgsave-error yes # 在RDB执行时如果出现错误,是否停止写入。默认是yes。
rdbcompression yes   # 是否压缩 RDB 文件。默认是yes。
rdbchecksum yes  #是否对 RDB 文件进行校验和。默认是yes。
dbfilename dump_6379.rdb  # 设置 RDB 文件名,默认是dump.rdb。
dir /var/lib/redis/6379  # 设置 RDB 存储的路径,默认是Redis启动目录,一般需要指定其他路径
rdb-del-sync-files no# rdb-del-sync-files是Redis的一个高级配置选项,在默认情况下不开启。
# 当开启后,Redis在执行RDB持久化期间,将首先创建一个新的RDB文件,如果保存成功,则删除上一个RDB文件,并将新RDB文件重命名为原来的RDB文件名。具体来说,当开启rdb-del-sync-files选项时,Redis会在将新的RDB文件重命名为旧的RDB文件的同时将旧的RDB文件删除,这个动作是同步执行的,因此相当于在RDB文件的写入和删除之间插入了一个同步点。
# 开启rdb-del-sync-files,可以将RDB生成和删除的CPU负载分散在时间上,从而减少对Redis操作的影响。但是需要注意的是,由于同时进行写入和删除的操作,所以会消耗更多的磁盘IO,因此在I/O繁忙的系统上,这个选项可能会影响Redis的性能表现。

3、手动触发RDB

在这里插入图片描述

4、RDB原理

在这里插入图片描述
在这里插入图片描述

(二)AOF

1、AOF是什么

以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
在这里插入图片描述

2、开启AOF

在这里插入图片描述
AOF和RDB同时开启,系统默认取AOF的数据(数据不会存在丢失)

3、AOF持久化流程

(1)客户端的请求写命令会被append追加到AOF缓冲区内;

(2)AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作sync同步到磁盘的AOF文件中;

(3)AOF文件大小超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量;

(4)Redis服务重启时,会重新load加载AOF文件中的写操作达到数据恢复的目的;

4、Rewrite压缩

1 压缩是什么:

AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制, 当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩, 只保留可以恢复数据的最小指令集.可以使用命令bgrewriteaof

2 重写原理,如何实现重写

AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename),redis4.0版本后的重写,是指上就是把rdb 的快照,以二级制的形式附在新的aof头部,作为已有的历史数据,替换掉原来的流水账操作。

重写虽然可以节约大量磁盘空间,减少恢复时间。但是每次重写还是有一定的负担的,因此设定Redis要满足一定条件才会进行重写。

如果Redis的AOF当前大小>= base_size +base_size*100% (默认)且当前大小>=64mb(默认)的情况下,Redis会对AOF进行重写。
在这里插入图片描述

(三)RDB vs AOF

在这里插入图片描述

三、Redis主从集群读写分离

在这里插入图片描述

(一)搭建主从架构

在这里插入图片描述

(二)主从同步原理

全量同步

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

增量同步

在这里插入图片描述

同步优化

在这里插入图片描述

总结

简述全量同步和增量同步区别?
全量同步:master将完整内存数据生成RDB,发送RDB到slave。后续命令则记录在repl baklog,逐个发送给slave。
增量同步:slave提交自己的offset到master,master获取repl_baklog中从offset之后的命令给slave

什么时候执行全量同步?
slave节点第一次连接master节点时slave节点断开时间太久,repl_baklog中的offset已经被覆盖时

什么时候执行增量同步?
slave节点断开又恢复,并且在repl_baklog中能找到offset时

四、Redis哨兵

(一)、哨兵的作用和原理

1、哨兵的作用

在这里插入图片描述

2、哨兵原理

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(二)、搭建哨兵集群

(三)、RedisTemplate哨兵模式

在这里插入图片描述
在这里插入图片描述

五、分片集群

在这里插入图片描述

(一)、搭建分片集群

(二)、散列插槽

(三)、集群伸缩

(四)、故障转移

(五)、RedisTemplate访问分片集群

在这里插入图片描述

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

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

相关文章

面试题:MySQL 中 InnoDB 的索引结构以及使用 B+ 树实现索引的原因

文章目录 概述表空间索引结构为什么使用 B 树实现索引&#xff1f;总结 概述 在 MySQL 的众多存储引擎中&#xff0c;InnoDB 是最常用的存储引擎&#xff0c;也是 MySQL 现阶段唯一免费支持事务机制的存储引擎。在本文中&#xff0c;我们以 InnoDB 为例&#xff0c;介绍 MySQL…

计算机丢失msvcr120.dll解决办法,快速解决的力量文件丢失

关于计算机丢失msvcr120.dll应该很多朋友都遇到过&#xff0c;本篇文章将和大家探讨一下关于计算机丢失msvcr120.dll解决办法。同时想和大叫一起了解一下msvcr120.dll文件到底有什么作用&#xff0c;是不是必须将其恢复。 一.msvcr120.dll的作用 msvcr120.dll文件时电脑中的一…

工业读写器如何选型?

随着工业自动化的迅速发展&#xff0c;库存管理、生产流程、质量管理等传统工作人工工作也逐渐由各种智能设备来替代管理。RFID技术作为非接触式数据传输的通信方式&#xff0c;也常常应用在工业场合之中。具体工业RFID读写器如何选型&#xff0c;有哪些选择要点呢?ANDEAWELL国…

尚品甄选2023全新SpringBoot+SpringCloud企业级微服务项目

最适合新手入门的SpringBootSpringCloud企业级微服务项目来啦&#xff01;如果你已经学习了Java基础、SSM框架、SpringBoot、SpringCloud&#xff0c;想找一个项目来实战练习&#xff1b;或者你刚刚入行&#xff0c;需要可以写到简历中的微服务架构项目&#xff01; 项目采用前…

基于小波神经网络的网络流量预测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022A 3.部分核心程序 ........................................................... %% 总流量数据 input(:,1)dat…

Go:关于 Channel

文章目录 写在前面内容模型图与代码发送流程接收流程 写在前面 本篇主要是通过 Channel 的模型图&#xff0c;对 Channel 的原理做一个基本的概述 内容 模型图与代码 我们先来看下 Channel 的模型图&#xff1a; 以上的图是一个简要的模型图&#xff0c;意味着丢失一些细节…

腾讯云2核4G轻量服务器5M带宽支持多少人同时在线?

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;5M带宽下载速度峰值可达640KB/秒&#xff0c;阿腾云以搭建网站为例&#xff0c;假设优化后平均大小为60KB&#xff0c;则5M带宽可支撑10个用户同时在1秒内打开网站&#xff0c;从CPU内存的角度&#xff0c;网站程序效…

从零开始学习:如何使用Selenium和Python进行自动化测试?

安装selenium 打开命令控制符输入&#xff1a;pip install -U selenium 火狐浏览器安装firebug&#xff1a;www.firebug.com&#xff0c;调试所有网站语言&#xff0c;调试功能 Selenium IDE 是嵌入到Firefox 浏览器中的一个插件&#xff0c;实现简单的浏览器操 作的录制与回…

AI:10-基于TensorFlow的玉米病害识别

玉米是世界上最重要的粮食作物之一,然而,玉米病害对其产量和质量造成了严重威胁。传统的病害识别方法通常依赖于人工观察和经验判断,效率低下且易受主观因素影响。近年来,基于深度学习的图像识别技术在农业领域取得了显著进展,为玉米病害的快速、准确识别提供了新的解决方…

干货!SRC漏洞挖掘项目实战经验分享

目录 一、hunter上搜索web.title”nacos”&#xff0c;查找中国境内的资产&#xff0c;定位到两个地址。 二、访问一下8086端口&#xff0c;界面很明显是nacos&#xff0c;直接抓包&#xff0c;创建用户。 三、登录网站&#xff0c;里面看到配置管理。 四、查看下redis.yml…

yolov8剪枝实践

本文使用的剪枝库是torch-pruning &#xff0c;实验了该库的三个剪枝算法GroupNormPruner、BNScalePruner和GrowingRegPruner。 安装使用 安装依赖库 pip install torch-pruning 把 https://github.com/VainF/Torch-Pruning/blob/master/examples/yolov8/yolov8_pruning.py&…

使用wireshark解析ipsec esp包

Ipsec esp包就是ipsec通过ike协议协商好后建立的通信隧道使用的加密包&#xff0c;该加密包里面就是用户的数据&#xff0c;比如通过的语音等。 那么如何将抓出来的esp包解析出来看呢&#xff1f; 获取相关的esp的key信息. 打开wireshark -> edit->preferences 找到pr…

【手写数字识别】GPU训练版本

SVM Adaboost Bagging 完整代码 I import torch import torch.nn.functional as F from torch.utils.data import DataLoader, TensorDataset from torchvision import transforms, datasets import matplotlib.pyplot as plt# 超参数 batch_size 64 num_epochs 10# 数据…

安卓三防平板在行业应用中有哪些优势

在工业维修和检测中&#xff0c;安卓三防平板的应用也十分广泛。它可以搭载各种专业软件和工具&#xff0c;帮助工人们进行设备故障排查和维护&#xff0c;降低了维修成本和停机时间。 一、产品卖点&#xff1a; 1. 防水性能&#xff1a;该手持平板采用了防水设计&#xff0c;…

国标28181 开源WVP-PRO项目部署

感谢大牛的开源框架 https://doc.wvp-pro.cn/#/ 一.直接使用源码部署&#xff08;在linux&#xff09; -- 安装环境 yum install -y java-1.8.0-openjdk.x86_64 git maven nodejs npm -- 下载源码-wvp项目 git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git ---…

MyBatis-Plus为简化开发而生

简介 MyBatis-Plus 简称 MP是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 他们的愿景是成为 MyBatis 最好的搭档&#xff0c;就像魂斗罗中的 1P、2P&#xff0c;基友搭配&#xff0c;效率翻倍。 特性 无…

【ARM CoreLink 系列 6 -- DMC-400控制器简介】

文章目录 1.1 DMC-400 简介1.1.1 DFI&#xff08;DDR PHY Interface&#xff09;1.1.2 DFI 接口组1.1.3 DMC-400 兼容协议1.1.4 DMC-400 特性1.1.5 DMC-400 Interface 1.1 DMC-400 简介 DMC-400是一个由ARM开发、测试和授权的动态内存控制器&#xff0c;同时 DMC-400也是一个符…

如何实现 Es 全文检索、高亮文本略缩处理

如何实现 Es 全文检索、高亮文本略缩处理 前言技术选型JAVA 常用语法说明全文检索开发高亮开发Es Map 转对象使用核心代码 Trans 接口&#xff08;支持父类属性的复杂映射&#xff09;Trans 接口的不足真实项目落地效果结语 前言 最近手上在做 Es 全文检索的需求&#xff0c;类…

曦力音视频转换工具Xilisoft Video Converter Ultimate mac中文版

Xilisoft Video Converter Ultimate mac是一款功能强大的视频转换软件&#xff0c;它可以将几乎所有流行的视频格式转换为其他格式&#xff0c;包括AVI、MPEG、WMV、DivX、MP4、H.264/AVC、AVCHD、MKV、RM、MOV、XviD、3GP等。此外&#xff0c;它还支持将视频转换为音频格式&am…

选择适合自身业务的HTTP代理有哪些因素决定?

相信对很多爬虫工作者和数据采集的企业来说&#xff0c;如何选购适合自己业务的HTTP代理是一个特别特别困扰的选题&#xff0c;市面上那么多HTTP代理厂商&#xff0c;好像这家有这些缺点&#xff0c;转头又看到另外一家的缺点&#xff0c;要找一家心仪的仿佛大海捞针。今天我们…