目录

一、引言

二、介绍

1.为什么Mysql的速度慢呢?

2.缓存更新策略

1.定期生成

2.实时生成

3.redis的内存淘汰机制

4.注意事项

1.缓存预热

2.缓存穿透

3.缓存击穿

4.缓存雪崩

三、总结


一、引言

  本篇文章将介绍Redis其中一个重要的作用,作为缓存。

二、介绍

Redis中的数据主要是存储在内存中,读取速度比硬盘快得多。

Redis一般是作为Mysql的缓存

1.为什么Mysql的速度慢呢?

1.数据存储在硬盘上,磁盘的IO速度并不快,尤其是随机访问

2.查询有时候没有走索引,直接全表扫描了,速度下降

3.如果是复杂的查询,比如联合查询,需要进行笛卡尔积的操作,速度会更慢

2.缓存更新策略

1.定期生成

会把访问的数据以日志的形式记录下来

统计这一段时间这些数据使用的频率,然后将这些数据设置为热点数据,放入Redis中

之后规定一定的时间自己去生成这些热点数据

缺点:不能及时的更新,如果某个不是热点数据的数据忽然变成了热点数据,不能及时更新到redis中

2.实时生成

先去redis中查,查到了就返回。如果没有查到就去mysql中查到,然后写入到redis中

但是这样redis会越写越多,怎么解决呢?

3.redis的内存淘汰机制

1.写满了之后就不允许写入了(不适合于实时更新)

2.没有过期时间:淘汰使用频率最低的,随机淘汰

3.有过期时间:淘汰使用频率最低的,随机淘汰,淘汰时间即将过期的

淘汰存在最久的(FIFO),淘汰使用频率最低的(LFU),淘汰最近一次使用时间最久的(LRU),随机淘汰(RANDOM)

4.注意事项

1.缓存预热

项目刚启动的时候,先将部分没有访问的数据放入到redis中

2.缓存穿透

查询的某个key,在redis中不存在,在mysql中也没有,大量的请求都到达mysql了,会使得mysql宕机。

解决方式:1.进行参数检查  2.当一个key查找数据库中不存在时,把一个空对象或者默认值保存在缓存中,之后再访问这个数据,从缓存中获取(存在的问题:缓存中有更多的key了,占用空间,数据不一致问题)。3.布隆过滤器:会保存数据是否存在,如果判断数据不在,就不会访问存储层。

3.缓存击穿

某个时期一个热点key突然过期了,导致大量请求打到mysql上,导致mysql挂掉

解决方式:1.对热点key永不过期

2.服务降级:关闭一些不是特别重要的功能

4.缓存雪崩

由于短时间内,大规模的key失效了,缓存命中率大幅下降,mysql的压力迅速上升,甚至于宕机

解决方式:1.加强监控报警,加强redis集群可用性的保证

2.设置过期时间的时候添加一个随机的因子/不设置过期时间

三、总结

  本篇文章简单介绍了Redis作为缓存的作用以及常见出现故障的情况,感谢观看!

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

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

相关文章

微软原版系统下载的几个好用网站

“不要因为走得太远,而忘记为什么出发。” 愿每一位Windows用户,都能在这份情怀中找到属于自己的小确幸!满满的情怀! 微软官方渠道 微软官网提供纯净的ISO镜像下载,适用于Windows 10/11等系统。访问Microsoft官网下…

kotlin Flow快速学习2025

其实,第一章节,只是让你了解下Flow的基本情况。我们开发中,基本很少使用这种模式。所以来讲,我们甚至可以直接使用StateFlow和SharedFlow才是正途。这是很多教程没有说明的点。所以第一章随便浏览下即可。日后再补充理解都是可以的…

【人工智能99问】什么是教师强制?(16/99)

文章目录什么是教师强制?教师强制(Teacher Forcing)的定义原比例(Original Proportion)教师强制的举例说明(一)教师强制的举例说明(二)优点和缺点解决曝光偏差的方法什么…

【WPF】WPF 自定义控件之依赖属性

📦 WPF 自定义控件之依赖属性 在开发 WPF 应用时,自定义控件能帮助我们复用逻辑和样式,但我很快会遇到一个问题:在控件内部如何支持数据绑定和属性变更通知?特别是我们继承自 Control 的时候,已经不能再继承…

DOM型XSS破坏

目录 首先 然后 第一种 第二种&#xff08;DOM&#xff09; HTMLCollection HTML Relationships Custom 解 首先 <script>//urlencode解码 //location接口的hash属性是一个字符串&#xff0c;包含一个“#”后跟位置URL的片段标识符。如果URL没有片段标识符&#…

Linux C 多线程基本操作

我们已经了解进程的基本概念&#xff1a;进程是正在执行的程序&#xff0c;并且是系统资源分配的基本单位。当用户需要在一台计算机上去完成多个独立的工作任务时&#xff0c;可以使用多进程的方式&#xff0c;为每个独立的工作任务分配一个进程。多进程的管理则由操作系统负责…

C语言基础:二维数组练习题

1. 一个二维数组赋了初值&#xff0c;用户输入一个数&#xff0c;在该二维数组中查找。找到则返回行列位置&#xff0c;没找到则提示。#include <stdio.h>int main() {int arr[3][3] {{1, 2, 3},{4, 5, 6},{7, 8, 9}};int t;printf("要查找的数&#xff1a;")…

Java面试题034:一文深入了解MySQL(6)

Java面试题029&#xff1a;一文深入了解MySQL&#xff08;1&#xff09; Java面试题030&#xff1a;一文深入了解MySQL&#xff08;2&#xff09; Java面试题031&#xff1a;一文深入了解MySQL&#xff08;3&#xff09; Java面试题032&#xff1a;一文深入了解MySQL&#x…

Java基础教程(011):面向对象中的构造方法

10-面向对象-构造方法 构造方法也叫做构造器、构造函数。 作用&#xff1a;在创建对象的时候给成员变量进行初始化的。 ✅ 一、构造方法的特点特点说明与类同名构造方法的名称必须与类名相同没有返回类型构造方法没有返回值&#xff0c;甚至不能写 void自动调用使用 new 创建对…

Adobe Photoshop:数字图像处理的终极工具指南

Hi&#xff0c;我是布兰妮甜 &#xff01;Adobe Photoshop自1990年问世以来&#xff0c;已经成为数字图像处理领域的标杆和代名词。这款强大的软件不仅彻底改变了摄影、设计和艺术创作的方式&#xff0c;还深刻影响了我们消费和感知视觉内容的文化方式。从专业摄影师到社交媒体…

本期来讲讲什么是LVS集群?

集群和分布式 集群&#xff08;Cluster&#xff09;&#xff0c;解决某个问题将多台计算机组合形成的系统群。 常见的集群类型&#xff1a; 负载均衡(LoadBalancing&#xff0c;简称LB)&#xff1a;由多个相同配置的主机组成&#xff0c;每个主机经过调度承担部分访问&#…

JVM 类加载过程笔记

一、概述 JVM&#xff08;Java Virtual Machine&#xff09;在运行 Java 程序时&#xff0c;需要将 .class 字节码文件加载到内存中&#xff0c;并转换成可以被 JVM 执行的数据结构&#xff0c;这一过程就是 类加载过程&#xff08;Class Loading Process&#xff09;。 JVM 的…

基于爬虫技术的电影数据可视化系统 Python+Django+Vue.js

本文项目编号 25002 &#xff0c;文末自助获取源码 \color{red}{25002&#xff0c;文末自助获取源码} 25002&#xff0c;文末自助获取源码 目录 一、系统介绍二、系统录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状 六、核心代码6.1 查询数据6.2 新…

如何用 LUKS 和 cryptsetup 为 Linux 配置加密

在信息安全愈发重要的今天&#xff0c;为 Linux 系统盘配置全盘加密已经成为很多企业和个人的选择。LUKS&#xff08;Linux Unified Key Setup&#xff09;配合工具 cryptsetup 可以在不牺牲性能的前提下实现高强度加密。本文将通过一个故事化的场景&#xff0c;介绍整个配置过…

VIVADO技巧_BUFGMUX时序优化

1.版本说明日期作者版本说明2025xxxx风释雪初始版本 2.概述 基于VIVADO时序约束&#xff0c;BUFGMUX多路时钟选择原语的设计3.原语介绍 7系列FPGA/UltraSCale/UltraSCaleBUFGMUX_CTRL BUFGMUX_CTRL_inst (.O(O), // 1-bit output: Clock output.I0(I0), // 1-bit input: Cloc…

服务器系统时间不准确怎么办?

服务器系统时间不准确可能会导致日志错乱、任务调度失败、SSL证书校验错误等问题。以下是解决办法&#xff1a;&#x1f310; 一、同步系统时间的方法1. 使用 timedatectl 命令&#xff08;适用于 systemd 系统&#xff09;timedatectl set-ntp true # 开启自动同步 timedatect…

零信任产品联合宁盾泛终端网络准入,打造随需而变、精准贴合业务的网络安全访问体系

零信任网络访问控制&#xff08;Zero Trust Network Access&#xff0c;ZTNA&#xff0c;文中零信任皆指 ZTNA&#xff09;基于“永不信任&#xff0c;持续验证”的理念&#xff0c;打破了企业基于传统网络边界进行防护的固有模式。在当前日趋复杂的网络环境下&#xff0c;内部…

【未限制消息消费导致数据库CPU告警问题排查及解决方案】

一、背景 某天下午&#xff0c;上游系统同一时间突然下了三个大合同数据&#xff0c;平均每个合同数据实例在6万以上的量级&#xff0c;短短几分钟内瞬间有20万左右的流量涌入系统。 而在正常情况下&#xff0c;系统1天处理的流量也不过2千量级&#xff0c;当时数据库指标监控告…

iOS开发 Swift 速记2:三种集合类型 Array Set Dictionary

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…