Redis解决缓存问题

目录

  • 一、引言
  • 二、缓存
  • 三、Redis缓存
  • 四、缓存一致性
    • 1.缓存更新策略
    • 2.主动更新
  • 五、缓存穿透
  • 六、缓存雪崩
  • 七、缓存击穿
    • 1.基于互斥锁解决具体业务
    • 2.基于逻辑过期解决具体业务

一、引言

在一些大型的网站中会有十分庞大的用户访问流量,而过多的用户访问对我们的MySQL数据库无疑是一种压力,不仅如此,由于MySQL自身性能的原因,面对过多的访问请求它的响应速度也会受限,这对用户的体验也会造成影响,那么我们该如何解决这些问题呢?
在这里插入图片描述

二、缓存

缓存就是数据交换的缓冲区,是存贮数据的临时地方,一般读写性能较高。我们一般会将一些用户要经常访问的数据先写入到缓存中去,当用户需要访问这些数据的时候我们直接从缓存中获取这些数据再返回给用户,这样就可以避免对数据库的大量查询,也能提高业务的效率。
在这里插入图片描述

三、Redis缓存

众所周知,redis是一款基于内存的NoSQL数据库,它的优点就是读写速度极快,那我们在项目中就可以使用redis来作为我们的缓存中间件,而在各大企业的实际开发过程中其实也都是使用redis来处理缓存相关的业务。
例如我们在一个查询商铺的业务流程中,当我们获取的前端发送来的查询某个商铺的请求之后,我们可以先在redis中查询是否有此商铺的数据,如果有,我们可以直接将redis中的数据返回给前端,如果没有,我们再去对数据库进行查询操作,如果在数据库中查询到了数据,我们先将此数据存入redis中,然后再将数据返回给前端。
在这里插入图片描述

四、缓存一致性

在我们添加了redis缓存之后虽然解决了数据库压力过大的问题,但是也会给我们带来一些新的问题,当MySQL中的数据更新之后redis中还是之前存入的旧数据,这时用户再进行访问的话就会得到旧数据,这就导致了缓存与数据库中的数据不一致的问题,基于这个问题,我们又提出了缓存的更新策略。

1.缓存更新策略

在这里插入图片描述

2.主动更新

我们在实际应用中会将各种更新策略来结合使用,而在各种更新策略中主动更新又是最复杂的一种,接下来我们就来深入研究主动更新策略的实现。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、缓存穿透

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

六、缓存雪崩

在这里插入图片描述

七、缓存击穿

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

1.基于互斥锁解决具体业务

在这里插入图片描述

2.基于逻辑过期解决具体业务

在这里插入图片描述

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

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

相关文章

初学UE5 C++①

游戏类 1.创建所需项的类 2.创建游戏模式类,在该类上实现所需项,引入头文件和构造函数时实例化 三种时间函数类型函数和提示类型 FName、FString、FText类型相互转化 FName用FName FString用ToString() FText用FText:…

零代码搭建:无需编程基础,轻松搭建数据自己的能源监测管理平台

零代码搭建能源管理平台,其核心是通过使用图形用户界面和可视化建模工具,来减少编写代码的工作量以及技能要求。平台拥有丰富的预定义组件,可以帮助管理人员快速构建应用程序。并可自定义区域框架,在搭建自己区域时,能…

说说对React Hooks的理解?解决了什么问题?

一、是什么 Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性 至于为什么引入hook,官方给出的动机是解决长时间使用和维护react过程中常遇到的问题,例如: 难以重用和共享组件中的与状态相关的逻辑逻辑复杂的组件难以开…

Juniper PPPOE双线路冗余RPM配置

------------------ 浮动静态路由 set routing-options static route 0.0.0.0/0 next-hop pp0.0 qualified-next-hop pp0.1 preference 10 ----------------- RPM测试的内容,包括从哪个接口发起测试,测试ping等等 #指定探针类型用ICMP请求 #探测的目标地址 #探测间隔 #探测阈…

编译原理-语法分析-自上而下分析

文章目录 语法分析器的功能自上而下分析面临的问题LL(1)分析法左递归的消除直接左递归非直接左递归 消除左递归的算法消除回溯、提左因子FIRST提左因子FOLLOW集 LL(1)的分析条件LL(1)文法构造FIRST和FOLLOW集合构造每个文法符号的FIRST集合构造FOLLOW集合…

windows安装nginx

一、下载安装Nginx 1、官网下载地址:nginx: download 2、下载教程:选择最新的Stable version(稳定版本)下载到本地 3、下载完成后,解压放入本地非中文的文件夹中: 4、启动nginx:切勿直接双击n…

Django路由层

路由层(urls) Django的路由层是负责将用户请求映射到相应的视图函数的一层。在Django的MVT架构中,路由层负责处理用户的请求,然后将请求交给相应的视图函数进行处理,最后将处理结果返回给用户。 在Django中&#xff0c…

Redhat7设置国内可用yum源

问题: 因为最近安装了redhat7,在使用的时候提示系统未注册订阅,无法使用官方的yum源进行安装软件。为此,我使用centos7国内的yum源替换redhat的官方的yum源实现软件安装。 “This system is not registered with an entitlement …

机器学习算法实战实战案例代码详解

文章目录 1.问题建模数据预处理 结果分析数据探索特征工程特征选择模型融合 1.问题建模 导入库 import numpy as np import pandas as pd from sklearn.model_selection import KFold from sklearn.metrics import mean_squared_error from sklearn.preprocessing import One…

EtherCAT转Modbus网关的 EtherCAT从站配置案例

兴达易控EtherCAT转Modbus网关(XD-MDEC20 )是一款具备ETHERCAT从站功能的通讯网关,其主要作用是将ETHERCAT网络和MODBUS-RTU网络连接起来。该网关可作为ETHERCAT总线中的从站使用,同时也能够连接到MODBUS-RTU总线中,作…

Topk问题!(面试高频常考)

🎥 屿小夏 : 个人主页 🔥个人专栏 : 剑指offer 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言🌤️什么是Top-k问题?🌤️常见的Top-K问题类型☁️寻找…

Halcon 练习(1):模板匹配

文章目录 前言相关视频链接模板匹配介绍Halcon平台使用动态区域截取代码优化固定选取位置添加打印信息添加匹配个数 个人能力不足 前言 Halcon平台的使用需要学习新的知识,这里专门开个新的专栏用来练习Halcon平台使用。 相关视频链接 WPF/HALCON机器视觉合集 模板…

Java16新增特性

前言 前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15 的特性进行了介绍,对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 Java14新增特性 Java15新增特性 今天我们来一起看一下…

​软考-高级-系统架构设计师教程(清华第2版)【第4章 信息安全技术基础知识(P160~189)-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第4章 信息安全技术基础知识(P160~189)-思维导图】 课本里章节里所有蓝色字体的思维导图

2023最新版本 从零基础入门C++与QT(学习笔记) -2- 命名空间的使用

🎏在不同的命名空间变量名可相同 创建(如下方代码块) 🎄分析一下构成 🎈-1- namespace 关键字命名空间 🎈-2- wm9 空间名称 🎈-3-括号里边正常定义变量即可 namespace wm9 {int a 99;char b A;float c 9.99;char…

C语言——计算n的阶乘

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int i;int n 0;int s1;scanf("%d",&n);for(i1; i<n; i){s*i;}printf("s%d\n",s);return 0; }

JVM:卡表元素如何维护?(写屏障)

写屏障 上面使用记忆集解决了缩减GC Roots扫描范围的问题&#xff0c;现在又抛出来一个新的问题&#xff0c;卡表元素如何维护的呢&#xff1f;&#xff0c;例如它们何时变脏、谁来把它们变脏等。 何时变脏这个问题应该很明确的&#xff0c;原则上应该发生在引用类型字段赋值…

032-从零搭建微服务-定时服务(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;mingyue: &#x1f389; 基于 Spring Boot、Spring Cloud & Alibaba 的分布式微服务架构基础服务中心 源…

Python 列表 pop()函数使用详解

pop函数使用详解 目录 pop函数使用详解 1、按照索引删除元素 1.1、正数索引 1.2、负数索引 1.3、不指定索引 2、返回被删除的元素 3、不同类型的元素 4、常见错误 pop() 可以「删除」列表中的元素&#xff08;默认最后一个&#xff09;。 语法 list.pop( index ) 参…

Java多线程编程秘籍:各种方案一网打尽,不要错过!

一、多线程实现方式 Java 中实现多线程的方式主要有四种&#xff1a; 继承 Thread 类&#xff1a;这是一种最简单的实现方式&#xff0c;直接继承 Thread 类&#xff0c;重写 run() 方法即可。实现 Runnable 接口&#xff1a;这是一种更加灵活的实现方式&#xff0c;不需要继承…