有趣的小知识(三)提升网站速度的秘诀:掌握缓存基础,让你的网站秒开
像MySql等传统的关系型数据库已经不能适用于所有的业务场景,比如电商系统的秒杀场景,APP首页的访问流量高峰场景,很容易造成关系型数据库的瘫痪,随着缓存技术的出现很好的解决了这个问题。
一、缓存的概念(什么是缓存)
缓存是计算机系统中用于提高数据访问速度的技术。缓存通常是一种高速存储器,用于把访问量较高的热点数据从传统的关系型数据库中加载到内存中,当用户再次访问热点数据时是从内存中加载,减少了对数据库的访问量,解决了高并发场景下容易造成数据库宕机的问题。
缓存工作原理
在缓存中存储数据的副本,当需要访问这些数据时,首先在缓存中查找,如果缓存中有这些数据的副本,则直接从缓存中取出,从而避免了从较慢的主存中读取数据的时间延迟。如果缓存中没有需要的数据,则需要从主存中读取,但读取的数据会被缓存,以便下次访问时更快地获取。
二、为什么要用缓存(为什么要用redis作为缓存)
原因
1.提高访问速度:缓存通常是一种高速存储器,能够更快地访问数据,因为它们通常比主存或者磁盘更接近处理器,可以更快地传输数据,从而可以提高计算机系统的响应速度。
2.减轻负载:缓存可以减轻计算机系统的负载,因为数据不需要每次都从主存或者磁盘读取。如果数据可以从缓存中获取,那么就可以减少系统访问主存或磁盘的次数,从而减少对系统的负载,提高系统的可扩展性。
3.降低能耗:缓存可以降低能耗,因为从缓存中读取数据比从主存或磁盘中读取数据更快,可以更快地完成任务,从而减少了处理器的工作时间,节省了能耗。
4.提高性能:通过使用缓存,可以将热点数据存储在更快的存储器中,从而减少了访问这些数据的时间延迟,提高了计算机系统的性能和效率。
5.高并发场景下:操作缓存能够承受的并发访问量是远远大于访问数据库的,比如redis,它的读的速度是110000次/s,写的速度是81000次/s。所以说将数据库中访问量高的数据存储到缓存中,用户请求的时候直接访问数据库,不必访问数据库,提高应用程序的并发量。
综上所述,使用缓存可以显著提高计算机系统的性能、减轻负载、降低能耗和提高可扩展性。
redis
Redis是一种开源的高性能键值存储系统,可以在内存中存储数据,并通过网络访问。Redis支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等,而且它提供了丰富的命令,可以对这些数据结构进行灵活的操作。除此之外,Redis还支持事务、持久化、复制、脚本执行、订阅与发布等高级功能。
Redis最初由Salvatore Sanfilippo开发,并且被广泛用于缓存、队列、计数器、排行榜、实时分析等场景。Redis的高性能和灵活性使得它成为流行的解决方案,被广泛应用于Web应用程序、移动应用程序、物联网等领域。同时,Redis的主从复制和集群模式可以扩展到多台服务器上,并具有良好的可扩展性和高可用性。
三、缓存的分类有哪些
根据缓存的位置和作用,可以将缓存分为以下几类:
1.浏览器缓存:浏览器缓存是指浏览器将之前访问过的网页、图片、脚本等资源保存到本地磁盘中,下次访问同样的资源时可以从本地磁盘中读取,从而加快页面加载速度。
2.代理服务器缓存:代理服务器缓存是指代理服务器将之前请求过的资源缓存到本地磁盘或内存中,下次请求同样的资源时可以从本地磁盘或内存中读取,从而减少网络带宽的消耗和请求的响应时间。
3.应用服务器缓存:应用服务器缓存是指应用服务器将之前查询过的数据或计算过的结果缓存到内存中,下次请求同样的数据或计算结果时可以直接从缓存中读取,从而加快响应时间。
4.数据库缓存:数据库缓存是指数据库将之前查询过的数据缓存到内存中,下次查询同样的数据时可以直接从内存中读取,从而加快查询速度。
5.分布式缓存:分布式缓存是指将缓存数据分散到多台服务器上,从而可以扩展缓存的容量和性能,提高缓存的可靠性和可扩展性。
6.本地缓存是指将数据缓存在客户端本地的存储介质中,例如浏览器中的本地存储(Local Storage)、Session Storage、IndexedDB、Web SQL等。本地缓存能够在浏览器关闭后依然保留,也可以在下次用户访问时快速加载。
相对于服务器端的缓存,本地缓存的优点是可以减少服务器端的压力,提高网站或应用程序的性能和响应速度。当用户再次访问同样的页面或数据时,可以直接从本地缓存中读取数据,而不必再次向服务器发送请求。
在Web开发中,本地缓存通常被用于存储一些静态的、不经常变化的数据,例如网站的Logo、样式表、JavaScript库、用户偏好设置等。同时,本地缓存也可以用于离线应用程序的开发,使得应用程序能够在没有网络连接的情况下继续工作,提高用户体验。
需要注意的是,本地缓存虽然能够提高网站或应用程序的性能和响应速度,但是缓存数据可能会过期或失效,因此需要在合适的时机清除缓存数据,以保证数据的正确性和一致性。
7.多级缓存
基于本地缓存和分布式缓存的优缺点,多级缓存应运而生,在实际的业务开发中一般也是采用多级缓存。注意:本地缓存一般存储更新频率低,访问频率高数据,分布式缓存一般存储更新频率很高的数据。
多级缓存的请求流程:本地缓存作为一级缓存,分布式缓存作为二级缓存;当用户获取数据时,先从一级缓存中获取数据,如果一级缓存有数据则返回数据,否则从二级缓存中获取数据。如果二级缓存中有数据则更新一级缓存,然后将数据返回客户端。如果二级缓存没有数据则去数据库查询数据,然后更新二级缓存,接着再更新一级缓存,最后将数据返回给客户端。
以上是常见的缓存分类,不同的缓存类型适用于不同的应用场景,可以根据具体需求选择合适的缓存方案。
四、通过缓存,提升网站速度
通过缓存可以提升网站的速度和性能,以下是一些常用的缓存技术和方法:
1.浏览器缓存:使用浏览器缓存可以加快网页的加载速度。可以通过设置HTTP响应头的Cache-Control和Expires字段,控制浏览器缓存的时间和内容。对于不经常更新的静态资源,例如图片、样式表、JavaScript库等,可以设置较长的缓存时间,减少浏览器的请求次数。
2.CDN缓存:使用CDN可以将网站的静态资源分布到全球各个节点上,从而加速资源的加载速度。CDN节点会缓存网站的静态资源,当用户访问网站时,会从距离最近的CDN节点获取资源,从而减少网络延迟和带宽消耗。
3.服务器端缓存:使用服务器端缓存可以加速动态内容的生成和响应。可以使用缓存中间件,例如Redis、Memcached等,将计算过的结果缓存到内存中,下次请求时可以直接从缓存中获取数据,从而减少数据库的查询次数和响应时间。
4.数据库查询缓存:对于频繁查询但是不经常更新的数据,例如用户信息、产品信息等,可以使用数据库查询缓存技术,将查询结果缓存到内存中,下次查询同样的数据时可以直接从缓存中获取数据,从而减少数据库的查询次数和响应时间。
5.前端性能优化:对于前端页面,可以采用一些性能优化技巧,例如压缩静态资源、使用CSS Sprite技术、异步加载JavaScript等,从而减小页面的体积和请求次数,加快页面的加载速度。
通过以上缓存技术和方法,可以有效地提升网站的速度和性能,改善用户体验,提高网站的可用性和可靠性。
相关文章:

有趣的小知识(三)提升网站速度的秘诀:掌握缓存基础,让你的网站秒开
像MySql等传统的关系型数据库已经不能适用于所有的业务场景,比如电商系统的秒杀场景,APP首页的访问流量高峰场景,很容易造成关系型数据库的瘫痪,随着缓存技术的出现很好的解决了这个问题。 一、缓存的概念(什么是缓存…...

SpringCloud之服务拆分和实现远程调用案例
服务拆分对单体架构项目来说:简单方便,高度耦合,扩展性差,适合小型项目。而对于分布式架构来说:低耦合,扩展性好,但架构复杂,难度大。微服务就是一种良好的分布式架构方案࿱…...
mybatis: Invalid bound statement (not found): com.atguigu.dao.UserDao.save
问题描述: 1 问题实质: dao层(又叫mapper接口)跟mapper.xml文件没有映射 2 问题原因: 出现这种映射问题的原因分为低级原因和更低级原因两种 更低级原因: (1)dao层的方法和mapper.xml中的方法不一样; (2)mapper中的namespace 值 和对应的dao层entity层不一致 &…...

JavaScript 代码规范
所有的 JavaScript 项目适用同一种规范。JavaScript 代码规范代码规范通常包括以下几个方面:变量和函数的命名规则空格,缩进,注释的使用规则。其他常用规范……规范的代码可以更易于阅读与维护。代码规范一般在开发前规定,可以跟你的团队成员…...

6综合项目 旅游网 【6.我的收藏和收藏排行榜】
我的收藏分析先登录→拿到当前登录的用户信息,从数据库中获取uid和对应uid的rid集合→将rid集合信息展示到我的收藏前台代码判断用户是否登录,传递uid,通过uid查找其对应的rid集合当查询的属性涉及到多张表,则必须使用多表连接&am…...

openpnp - error - 微调mark点坐标后,更新板子其他原件其他坐标报错的变通方法
文章目录openpnp - error - 微调mark点坐标后,更新板子其他原件其他坐标报错的变通方法概述想出来一个变通的方法ENDopenpnp - error - 微调mark点坐标后,更新板子其他原件其他坐标报错的变通方法 概述 载入坐标文件后, 指定左下角远点坐标, 然后定位板子上的3个Mark点, 因为…...

借助ChatGPT爆火,股价暴涨又暴跌后,C3.ai仍面临巨大风险
来源:猛兽财经 作者:猛兽财经 C3.ai的股价 作为一家人工智能技术提供商,C3.ai(AI)的股价曾在2021年初随着炒作情绪的增加,达到了历史最高点,但自那以后其股价就下跌了90%,而且炒作情…...

蓝桥杯-数位排序
蓝桥杯-数位排序1、问题描述2、解题思路3、代码实现1、问题描述 小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。 例如, 2022 排在 409 前面, 因为 2022 的数位…...
【ES实战】ES 插件包离线安装(本地文件)
ES 插件包离线安装(本地文件) 文章目录ES 插件包离线安装(本地文件)使用安装命令安装直接解压式验证安装情况常用的分词插件analysis-ik analysis-pinyin analysis-dynamic-synonym 在集群的节点上分发插件的ZIP安装包 使用安…...

Spring的核心基础——IOC与DI
文章目录一、Spring简介1 Spring介绍1.1 为什么要学1.2 学什么2 初识Spring2.1 Spring家族2.2 Spring发展史3 Spring体系结构3.1 Spring Framework系统架构图4 Spring核心概念问题导入4.1 核心概念二、IOC和DI入门1 IOC入门问题导入1.1 门案例思路分析1.2 实现步骤1.3 实现代码…...
C++正则表达式基础
文章目录1. 查找第一个匹配的2. 查找所有结果3. 打印匹配结果的上下文4. 使用子表达式5. 查找并替换注意: .(点)在括号中没有特殊含义,无需转义用\转义。 1. 查找第一个匹配的 #include <iostream> #include <regex>using names…...

如何在网络安全中使用人工智能并避免受困于此
人工智能在网络安全中的应用正在迅速增长,并对威胁检测、事件响应、欺诈检测和漏洞管理产生了重大影响。根据Juniper Research的一份报告,预计到2023年,使用人工智能进行欺诈检测和预防将为企业每年节省110亿美元。但是,如何将人工…...

生态 | 人大金仓与超聚变的多个产品完成兼容认证
近日,人大金仓与超聚变数字技术有限公司(简称“超聚变”)完成了多款产品的兼容互认测试。测试表明,人大金仓KingbaseES V8数据库与超聚变服务器操作系统FusionOS、超聚变FusionOne基础设施完全兼容,人大金仓异构数据同…...

4自由度串联机械臂按颜色分拣物品功能的实现
1. 功能说明 本实验要实现的功能是:将黑、白两种颜色的工件分别放置在传感器上时,机械臂会根据检测到的颜色,将工件搬运至写有相应颜色字样区域。 2. 使用样机 本实验使用的样机为4自由度串联机械臂。 3. 运动功能实现 3.1 电子硬件 在这个…...

玩转结构体---【C语言】
⛩️博主主页:威化小餅干📝系列专栏:【C语言】藏宝图🎏 ✨绳锯⽊断,⽔滴⽯穿!一个编程爱好者的学习记录!✨目录结构体类型的声明结构体成员访问结构体传参前言我们是否有想过,为什么会有结构体呢…...

c语言指针怎么理解 第二部分
第四,指针有啥用。 比方说,我们有个函数,如下: int add(int x){ return (x1); //把输入的值加1并返回结果。 } 好了,应用的时候是这样的: { int a1; aadd(a); //add函数返回的是a1 //现在 a等于…...

GC简介和监控调优
GC简介: GC(Garbage Collection)是java中的垃圾回收机制,是Java与C/C的主要区别之一,在使用JAVA的时候,一般不需要专门编写内存回收和垃圾清理代 码。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。 什么…...
Understanding The Linux Kernel --- Part2 Memory Addressing
内存寻址 操作系统自身不必完全了解物理内存,如今的微处理器包含的硬件线路使内存管理既高效又健壮,所以编程错误就不会对该程序之外的内存产生非法访问 x86如何进行芯片级内存寻址Linux如何利用寻址硬件 x86 三种不同的地址术语 逻辑地址 逻辑地址…...

前后端分页查询好大的一个坑(已解决)
前言:如果你在做前后端的分页查询,找不到错误,请你来看看是否是和我一样的情况?情况:做了一个前后盾UI的项目,有一个页面是查询系统日志,要进行分页查询;第一页的:第5页的…...
Python批量执行读取ini文件和写入ini文件时,性能比较低怎么办,给出解决方案和源码
Python批量执行读取ini文件和写入ini文件时,性能比较低怎么办,给出解决方案和源码 解决方案: 使用ConfigParser的缓存机制,可以避免频繁读取ini文件造成的性能问题。 将ini文件转换为json格式,使用json库进行读写操作…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...