Redis高可用之持久化,以及reids的性能管理

一、redis高可用:

在集群当中有一个非常重要的指标,提供正常服务的时间的百分比(365天)99.9%

redis的高可用含义更加宽泛,正常服务是指标之一,数据容量的扩展,数据的安全性

在redis中实现高可用的技术:持久化,主从复制,哨兵模式(处在主从复制的基础之上),reids集群。

持久化:持久化是最简单的高可用方法,主要作用是数据实现备份,也就是把redis缓存在内存中的数据保存到本地的硬盘中(冷备份)

二、redis持久化的两种方式:

  1. RDB持久化:redis在内存中的数据定时保存到磁盘。(自动执行,手动执行)

  2. AOF持久化:redis的操作日志,以追加的方式写入一个AOF的文件,类似于MySQL的binlog

三、RDB持久化:

1.指在指定的时间间隔内,将内存中当前进程中的数据生成快照,保存到硬盘(快照持久化),用二进制压缩存储,保存的文件名的后缀是.rdb。只要redis启动时,可以直接读取快照文件,实现数据恢复 。

vim /etc/redis/6379.conf

 2.生产中禁止用save保存,都用bgsave,一旦执行了save,redis的主进程会进入阻塞状态,读写都将不能进行。

3.bgsave:就是rdb快照保存的方式。特点是在执行关闭redis服务的时候,也会自动执行bgsave。

4.bgsave是主从复制的默认恢复模式 从节点执行全量恢复操作。主节点通过bgsave命令把rdb发送给从节点,除了配置文件 save mn 关闭redis会执行bgsave,开启redis也会执行bgsave。

4.RDB工作方式:

fork子进程,子进程创建RBD文件

特点:主进程会通过fork机制来创建一个子进程,子进程的创建过程中,主进程会阻塞,子进程创建完毕之后,主进程会解除阻塞。由子进程来创建RDB文件。创建完成之后,通知主进程更新通知信息

 5.bgsave恢复过程

四、AOF持久化:

1.AOF持久化是将redis的每一次读、写、删除命令记录到一个单独的以.aof结尾的文件(查询操作不记录,查询操作是由主进程记录),当redis重启时,再次执行AOF文件中的命令来恢复数据。AOF的实时性更好,也是主流的持久化方案。

2.AOF默认是关闭的

3.RDB是redis的默认持久化文件,但是一旦开启AOF持久化,那么redis会以AOF的持久化文件作为最高优先级

五、AOF重写:一旦开启AOF持久化之后,所有的数据库操作记录必然都会写入AOF持久化文件当中。AOF优先级高于RDB。

vim /etc/redis/6379.conf         AOF生成的文件默认是关闭的需要在配置文件当中手动开启

1.随着时间的增长,AOF文件中的户数也会不断增加。AOF的文件也会越来越大。过大的AOF文件不仅仅会影响服务器的正常运行,也会导致数据恢复的时间过长。
2.文件重写是指定期的重写AOF文件,目的是减小AOF文件的体积。AOF重写是把redis进程内的数据转化为写的命令,同步到新的AOF文件当中(不会额外的生成新的文件,只是在原内容中进行压缩)。不会对原有的AOF文件进行任何读、写操作
3.文件重写虽然是AOF持久化强烈推荐的,但不是必须的。没有重写并不影响redis启动时的读取数据。在实际工作中,会关闭自动的文件重写。通过定时任务来完成。

4.AOF的实现过程

六、RDB和AOF之间的优缺点:

RDB的优点:文件体积小,网络传输速度很快,适合全量复制。恢复速度也比AOF要快

缺点:做不到实时的持久化,数据如此重要,不能够容忍丢失的。另外RDB需要满足特定的格式,兼容性很差。

老版本的RDB不支持新版本。(redis版本一定要一致)5.0.7

AOF的优点:秒级持久化。兼容性好。因为是文本格式保存的命令,命令是通用的,适合数据迁移。

缺点:文件大,恢复速度慢。AOF持久化需要频繁的向磁盘写入数据,磁盘的IO压力也是很大的。对redis主进程的性能也会有一定的影响。

七、reids的性能管理

1.查看当前占用系统多少

used_memory:853688 redis中数据占用的内存

used_memory_rss:10522624 redis向操作系统申请的内存

used_memory_peak:853688 redis使用内存的峰值

2.在文本中如何设置redis占用系统的阈值 vim /etc/redis/6379.conf

3.内存碎片率=redis向系统申请的内存/redis数据实际占用的内存

used_memory_rss/used_memory=内存碎片率

系统已经分配给了redis,但是redis未能够有效利用的内存

allocator_frag_ratio:1.33

分配器碎片的比例,redis的主进程调度时产生的内存。比例要越小越好,值越高说明内存的浪费越多。

allocator_rss_ratio:6.79

分配器占用物理内存的比例,告诉你主进程调度执行时占用了多少物理内存。

rss_overhead_ratio:0.93

RSS是向系统申请的内存空间,redis占用物理空间额外的开销比例,比例要越低越好,表示redis实际占用的内存和向系统申请的内存越接近,额外的开销越低。

mem_fragmentation_ratio:12.18

内存碎片的比例,越低越好,内存的使用率越高。

4.手动清理碎片的两种方法:

八、缓存击穿(面试题)

1.什么是击穿:redis缓存数据有一部分丢失,导致请求转发到了数据库,或者说是缓存刚过期,新缓存没有建立,请求都发送到了数据库。

2.怎么处理击穿:热点缓存数据设置为永不过期;做持久化,高可用方案。

3.当面试官问及击穿时的回答

九、缓存雪崩

1.什么是雪崩:redis产生大面积故障(缓存数据丢失),所有的请求全部转发到了数据库;数据库不适合高并发,很快集群就会崩溃,然后整个系统瘫痪。

2.发生雪崩的原因:人为

                            缓存数据大量的同时过期,新的缓存没有及时生成

                            redis服务集群崩溃

                            访问量过大,超过redis本身的负载能力

3.怎么防备雪崩发生:redis集群一定要做高可用方案

                                   熔断机制,hystrix可以实现熔断,降级,限流来降低雪崩的概率

  十、缓存穿透

原因:80%以上是黑客攻击。

利用缓存和数据库里面都没有的数据,用户一直在发起请求。

利用大量的请求压垮数据库,从而导致整个网站崩溃。

处理:防火墙

           验证拦截,需要手动完成,可以判断是否是攻击行为

           缓存空的数据,把一些空数据,也设置缓存,声明周期短一些。

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

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

相关文章

平移、旋转、缩放和媒体

一、平移 1.1translate()函数 做转换工作可以用translate()函数,这个函数可以改变坐标系。通过改变默认的坐标系,我们可以创建不同的转换方式,包括平移、旋转和缩放。 1.2平移位置案例 案例代码如图1 图1 保存运行如…

Flutter——全网最精致木鱼APP可上架应用市场

研发背景 工作之余,闲来无事,想着研发一款用户可能会经常用到的一款APP,并且能够顺便掌握一下Flutter Material Design 3 UI,所以就有了这款比较精致的木鱼APP的诞生。 开源代码 https://github.com/z244370114/woodenfish

期刊评价指标及其查询方法

1、期刊评价体系一 科睿唯安《期刊引证报告》(Journal Citation Reports, JCR) 科睿唯安每年发布的《期刊引证报告》(Journal Citation Reports, JCR)是一个独特的多学科期刊评价工具。JCR数据库提供基于引文数据的统计信息的期…

Linux下文件编译器-GCC/G++

前言 本文介绍了c/c的编译过程以及gcc/g的时使用 一.c/c翻译的本质:将高级语言翻译成二进制 1)程序翻译过程: (1)预处理(头文件展开、宏替换、去注释、条件编译)还是C语言代码 ​ …

项目:基于gRPC进行项目的微服务架构改造

文章目录 写在前面基本使用封装客户端封装服务端Zookeeper 写在前面 最近学了一下gRPC进行远程调用的原理,所以把这个项目改造成了微服务分布式的架构,今天也是基本实现好了,代码已提交 这里补充一下文档吧,也算记录一下整个过程…

Ruoyi 快速开发平台

Ruoyi 快速开发平台 一、官网二、准备工作2.1 环境要求2.2 必要配置 三、运行系统3.1 后端运行3.2 前端安装及运行 四、自定义开发4.1 新增业务模块4.2 代码生成4.2.1 创建菜单4.2.2 后端代码4.2.3 前端代码 一、官网 链接: 前后端分离版本 回到目录 二、准备工作 2.1 环境要…

【C语言】链式队列的实现

队列基本概念 首先我们要了解什么是队列,队列里面包含什么。 队列是线性表的一种是一种先进先出(First In Fi Out)的数据结构。在需要排队的场景下有很强的应用性。有数组队列也有链式队列,数组实现的队列时间复杂度太大&#x…

【数据结构】链式二叉树的实现和思路分析及二叉树OJ

【数据结构】链式二叉树的实现和思路分析及二叉树OJ 🔥个人主页:大白的编程日记 🔥专栏:数据结构 文章目录 【数据结构】链式二叉树的实现和思路分析及二叉树OJ前言一.链式二叉树的定义及结构二.链式二叉树的遍历2.1前序遍历2.2中…

Typora 【最新1.8.6】版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)

文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora 是一款专为 Markdown 爱好者设计的文本编辑器,它结合了简洁的界面设计与强大的 Markdown 渲染能力,为用户提供了一个流畅、高效的写作环境。以下是对 Typora 更详细的介绍: 核心特…

课程学习前提约束(拓扑排序练习)

很显然的拓扑排序 class Solution { public:bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {int n numCourses;vector<int> record(n1,0);queue<int> q;vector<vector<int>> graph(n 1);for (int i 0; i &l…

nfs和web服务器的搭建

&#xff08;一&#xff09;web服务器的搭建 1.配置基本环境 要点有&#xff0c;yum源&#xff0c;包含nginx和阿里云&#xff08;或者腾讯云或者华为云&#xff09;&#xff0c;这里的相关知识可以参考之前的yum配置笔记 2.安装nginx yum -y install nginx 3.验证并且开启服…

源码编译安装,及nginx服务控制、监控块

1.源码编译安装&#xff1a; [root17dns ~]# wget https://nginx.org/download/nginx-1.27.0.tar.gz 2.解压&#xff1a; [root17dns ~]# tar -zxvf nginx-1.27.0.tar.gz 3.安装gcc等工具 [root17dns ~]# yum -y install gcc gcc-c [root17dns ~]# yum -y install make lrzsz …

24年第三届钉钉杯大学生大数据挑战赛浅析

需要完整资料&#xff0c;请关注WX&#xff1a;“小何数模”&#xff01; 本次钉钉杯大数据挑战赛的赛题已正式出炉&#xff0c;无论是赛题难度还是认可度&#xff0c;该比赛都是仅次于数模国赛的独一档&#xff0c;可以用于国赛前的练手训练。考虑到大家解题实属不易&#xf…

如何学习Doris:糙快猛的大数据之路(从入门到专家)

引言:大数据世界的新玩家 还记得我第一次听说"Doris"这个名字时的情景吗?那是在一个炎热的夏日午后,我正在办公室里为接下来的大数据项目发愁。作为一个刚刚跨行到大数据领域的新手,我感觉自己就像是被丢进了深海的小鱼—周围全是陌生的概念和技术。 就在这时,我的…

Django实战:开启数字化任务管理的新纪元

&#x1f680; Django实战&#xff1a;开启数字化任务管理的新纪元 &#x1f310; &#x1f4d6; 引言 在数字化转型的浪潮中&#xff0c;任务管理的智能化成为提升组织效能的关键。今天&#xff0c;我将带领大家深入了解我们最新开发的OFTS系统——一款创新的组织任务管理软…

双指针-【3,4,5,6,7,8】

第三题&#xff1a;快乐数 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/happy-number/算法思想&#xff1a; 1.每个…

SpringBoot上传超大文件导致OOM,完美解决办法

问题描述 上传大文件报错: Caused by: java.lang.OutOfMemoryError at java.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:123) ~[?:1.8.0_381] at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:117) ~[?:1.8.0_381] …

调用百度的大模型API接口实现AI对话!手把手教程!

本文介绍如何使用百度的大模型API接口实现一个AI对话项目 1 注册百度云 2 获取API接口 3 配置环境 4 代码编写与运行 5 chat models 1 注册百度云 搜索百度云&#xff0c;打开官网注册&#xff0c;充值一点点大米&#xff08;收费很低&#xff0c;大概生成几个句子花费一毛…

FRP配置内网穿透52版本以上适用

简述 适用frp配置内网穿透来说我们需要进行简单的区分&#xff0c;具有公网IP的服务器我们简称为服务端&#xff0c;内网的服务器我们可以简称为客户端&#xff0c;frp需要针对不同的服务器配置不同的文件 下载安装包 Linux下载地址 https://github.com/fatedier/frp/relea…