关于软件设计中缓存的那些事儿

CentOS7下OpenVPN Access Server 2.12.0安装与智能分流配置指南 本文详细介绍了在CentOS7系统上安装OpenVPN Access Server 2.12.0并进行智能分流配置的完整指南。从环境准备、核心安装到智能分流策略的深度配置,提供了经过验证的优化方案和故障排查技巧,帮助用户实现高效的VPN网关部署和流量管理。 阅读详情

​缓存可以说是最简单也最复杂的一个概念,用好它你可以让你的应用飞起,不会用它,即使再高的配置,你的应用也难以发挥最佳效果。

什么是缓存

缓存就是硬件或者软件直接存取数据,而不是从原始源(数据库,计算等)存取数据,它会加快数据的读取。

内存缓存是我们经常使用的缓存技术,通过将常用的数据保存到内存中,我们就可以避免从数据库中读取数据,这会大大提升应用的加载速度,提升用户体验。

什么时候使用缓存

  • 当我们需要请求外部资源的时候,比如第三方 api,我们希望缓存请求的结果
  • 当请求的数据发生变化的时候,我们可以缓存返回结果
  • 当应用需要频繁地请求同一个资源的时候
  • 当应用需要运行一些复杂的计算机的时候
  • 当应用查询耗时的时候

缓存的好处

  • 提升应用的性能
  • 减少数据库的开销
  • 增加并发

缓存的类型

  • 应用缓存
  • 数据库缓存
  • DNS 缓存
  • 客户端缓存
  • CDN 缓存
  • API 网关缓存

分布式缓存

分布式缓存由一个服务端实现管理和控制,有多个客户端节点存储数据,可以进一步提高数据的读取速率。那么我们要读取某个数据的时候,应该选择哪个节点呢?如果挨个节点找,那效率就太低了。因此需要根据一致性哈希算法确定数据的存储和读取节点。以数据 D,节点总个数 N 为基础,通过一致性哈希算法计算出数据 D 对应的哈希值(相当于门牌号),根据这个哈希值就可以找到对应的节点了。一致哈希算法的好处在于节点个数发生变化(减少或增加)时无需重新计算哈希值,保证数据储存或读取时可以正确、快速地找到对应的节点。

分布式缓存能够高性能地读取数据、能够动态地扩展缓存节点、能够自动发现和切换故障节点、能够自动均衡数据分区,而且能够为使用者提供图形化的管理界面,部署和维护都十分方便。

缓存策略

(1) Cache-Aside

先读取缓存,如果缓存失效,那么读取数据库获取数据,然后将数据设置到缓存里面。

(2) Read Through

应用只从缓存取数据,如果没有取到,那么缓存会从数据库获取数据,然后设置缓存,最后应用从缓存继续读取数据。

(3) Write Through

应用保存数据的时候,都是先保存到缓存里面,缓存会将数据再保存到数据库,应用不直接和数据库打交道,只是保存数据到缓存。

(44) Write Back or Write Behind

应用程序将数据写入缓存,然后会发送确认返回给应用,然后缓存写入数据库。

(5) Write Around

应用数据直接写入数据库,从而读取数据从缓存中获取。

总结

曾经有个伟人说过,所有我们目前解决不了的计算机问题,都可以通过添加一个中间层来解决,而缓存就是一个中间层,有了这个中间层,我们的应用性能得到了极大提升,但缓存不是万能的,它也有它的弊端,只有合理的使用它,我们才能发挥它的最大价值。

基于ESP32 蓝牙游戏手柄设计 介绍使用 ESP32 并通过 BLE 通信的 设计手持游戏手柄,包含原理图与代码 阅读详情

相关推荐

AI 与新媒体

AI重构新媒体生态:从生产到分发的全链路变革 AI正成为新媒体领域的核心基础设施,通过五大能力重塑内容产业:自动化生产(AIGC写作/制图/剪辑效率提升5-10倍)、智能分发(算法精准匹配用户)、数据洞察(实时舆情分析)、风险管控(审核效率提升12倍)和运营优化(A/B测试自动化)。这推动行业从"人找内容"转向"内容找人",制作成本下降90%的同时,也带来同质化加剧、版权争议和职业重构等挑战。当前阶段,人机协同成为主流——AI处理标准化生产,人类专注创意与价值观把控。

eastyuxiao的专栏 380

缓存原理及优缺点

原理:先查询缓存中有没有要的数据,如果有,就直接返回缓存中的数据。 如果缓存中没有要的数据,才去查询数据库,将得到数据先存放到缓存中,然后再返回给php。 优点: 1、 减少了对数据库的读操作,数据库的压力降低  2、 加快了响应速度   缺点: 1、 因为内存断电就清空数据,存放到内存中的数据可能丢失        2、 缓存中的数据可能与数据库中数据不一致    

Noneyes的博客 4313

惯性导航原理(九)-INS的初始对准-初始姿态确定+双矢量定姿

文章目录INS的初始对准INS初始化静基座/静态粗对准静态粗对准—加速度计调平原理加速度计调平静态粗对准—陀螺罗盘思考初始对准的影响因素双矢量定姿原理静态解析粗对准—双矢量定姿静态解析粗对准(续)其它初始对准方法精对准动对准 INS的初始对准 INS的初始对准为初始化的一部分 INS初始化 初始位置: 给定(INS没有初始位置确定的能力,例如从GPS ) 初始速度: 零(静止状态)或给定 初始姿态: 初始对准(INS有能力自己测资态) 粗对准vs. 精对准 静止状态vs. 运动状态 重要性: 失之毫厘,谬

十八与她的博客 1万+

硬盘写入缓存

1.什么是硬盘写入缓存 缓存是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。WinXP系统有一种技术,能够把对磁盘的写入操作暂时缓存起来,然后等到系统空闲的时候再执行相应操作。对写入动作进行缓存。当硬盘接到写入数据的指令之后,并不会马上将数据写入到盘片上,而是先暂时存储在缓存里,然后发送一个“数据已写入”的信号给系统,这时系统就会认为数据已经写入,并

Shane_Wang的专栏 2818

手把手教你用Microsoft AEC Challenge数据集训练自己的回声消除模型(附完整代码)

本文详细介绍了如何使用Microsoft AEC Challenge数据集训练专业的回声消除模型,包括环境准备、数据清洗、模型架构设计、训练流程和实际部署注意事项。通过完整的代码示例和实战指南,帮助开发者快速掌握AEC技术,提升语音通信系统的回声消除效果。

weixin_27697385的博客 458

雷达系统仿真——非相参累积和相参累积检测

非相参累积和相参累积检测 在雷达回波检测中,在特殊情况下,才会根据单个脉冲来进行检测判决。通常,雷达会从每个目标接收几个到几百个成串脉冲,在做出判决之前,要先对脉冲串进行处理。对脉冲串进行处理的方法有5种: 相参累积(Coherent Integration); 非相参累积(Nocoherent Integration); 二进制累积; 累计检测; 反馈累积器。 1 非相参累积 也叫“检波后累积”,或者“视频累积”(Video Integration),比检波前累积更容易完成,因为不需要保存回波的相位。

little_soldier的专栏 1万+

让写入数据库的数据自动写入缓存

在项目开发中,为了减轻数据库的 I/O 压力,加快请求的响应速度,缓存是常用到的技术。Redis 和 Memcache 是现在常用的两个用来做数据缓存的技术。数据缓存一些常见的做法是,让数据写入到数据库以后通过一些自动化的脚本自动同步到缓存,或者在向数据库写数据后再手动向缓存写一次数据。这些做法不免都有些繁琐,且代码也不好维护。我在写 N...

weixin_34390996的博客 670

LLaMA-Factory微调教程2:命令行sft微调

本文介绍了如何使用llama-factory项目在本地运行Qwen2-7B大语言模型进行对话。首先通过llamafactory-cli env查看环境配置,然后使用git lfs下载Qwen2-7B模型。创建配置文件qwen2_7b_instruct.yaml,修改模型路径和模板参数。最后通过llamafactory-cli chat命令启动对话服务,加载模型配置文件和tokenizer,完成环境初始化后即可进行交互式对话。

Cachel Wood的博客 8814

软件系统缓存设计

缓存(cache)是用于存储数据的硬件或软件的组成部分,以使得后续更快访问相应的数据。简单来说,缓存就是数据交换的缓冲区。缓存是一种空间换时间的设计。缓存中的数据可能是提前计算好的结果、数据的副本等。典型的应用场景:有 CPU cache,磁盘 cache,进程内缓存,分布式缓存,数据库缓存等。

云原生Java Web领域技术博客 2525

NX二次开发PK获取对象类型

PK_ENTITY_ask_class(),获取对象类型建议用这个函数,比较通用,包含所有对象类型,可以替代UF_MODL_ask_edge_type(),UF_MODL_ask_body_type(),UF_MODL_ask_face_type()等函数。

qq_39541524的博客 827

redhawk:avgTW maxTW minTW minWC的区别

分析dynamic ir drop报告时会遇到这几个值,avgTW maxTW minTW minWC,如下图。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 694

常用缓存软件分类及详解

主流缓存软件可分为本地缓存和分布式缓存两大类。本地缓存如Caffeine、Ehcache适合单节点高性能场景;分布式缓存如Redis、Memcached适合多节点共享数据。Redis支持丰富数据结构,Memcached专注简单键值存储。云服务如AWS ElastiCache提供托管解决方案。选型需考虑数据量、并发需求及部署环境,本地应用可选Caffeine,分布式场景推荐Redis,云环境优先使用托管服务。

魏波 1543

MobSF-v3源代码分析(一)

移动安全框架(MobSF)是一种自动化的移动应用程序(Android/iOS/Windows)测试框架,能够执行静态、动态和恶意软件分析。 它可用于Android、iOS和Windows移动应用程序的有效和快速安全分析,并支持二进制文件(APK,IPA和APPX)和压缩源代码。 MobSF可以在运行时为Android应用程序进行动态应用程序测试,并具有由CapFuzz(一种特定于Web API的安全扫描程序)提供支持的Web API模糊测试。MobSF旨在使您的CI/CD或DevSecOps管道集成无缝。

武天旭的博客 8960

CPU高速缓存那些事儿

引言 在分析JDK8新增的高并发原子累加器Striped64的时候,发现有一个“伪共享”的概念,而要理解它必须对CPU缓存有一定的了解,所以本文将先对CPU的缓存架构以及一些相关术语做一个研究探索。   CPU缓存的原理       众所周知,在如今的计算机时代,CPU的运算处理速度与内存读写速度的差异非常巨大,为了解决这种差异充分利用CPU的使用效率,CPU缓存应运而生,它是介于CP...

春花秋月何时了 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

互联网缓存那些事儿

高速缓存,英文名称Cache(发音 cash),是一种高速存储层。其最早是在上个世纪70年代的一篇电子期刊中诞生的概念,主要用来解决CPU处理速度和获取内存数据速度不匹配的问题。通过引入缓存层,可将数据提前加载到缓存中,CPU在获取数据时可首先从缓存中读取,从而减小数据的读取时间。随着不断的发展,缓存已经不仅仅包括CPU缓存,后续还出现了磁盘缓存,以及应用层方面的缓存,比如客户端缓存、CDN缓存、Nginx缓存、DB缓存等等,甚至于Linux操作系统内部提供的TLB高速缓存。

hbnn111的专栏 1683

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

CPU缓存那些事儿

CPU缓存哪些事儿

小x的博客 508

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

一文点破WeakCache缓存那点事儿

1、WeakCache缓存存在的意义

qq_38402699的博客 1341

项目中的缓存那些事儿

1.为何需要缓存? 在高并发请求时,为何我们频繁提到缓存技术?最直接的原因是,目前磁盘IO和网络IO相对于内存IO的成百上千倍的性能劣势。 做个简单计算,如果我们需要某个数据,该数据从数据库磁盘读出来需要0.1s,从交换机传过来需要0.05s,那么每个请求完成最少0.15s(当然,事实上磁盘和网络IO也没有这么慢,这里只是举例),该数据库服务器每秒只能响应67个请求;而如果该数据存在...

a111968的博客 199

前端缓存那些事儿:你知道如何让它更高效吗?

🤍 前端开发工程师、技术日更博主、已过CET6🍨、23年度博客之星前端领域TOP1🕠高级专题作者、打造专栏🍚签约作者、上架课程💬 前些天发现了一个巨牛的,通俗易懂,风趣幽默,忍不住分享一下给大家。。

你若盛开,清风自来 2250

图文并茂,带你认识CPU缓存那些事儿

转自:https://blog.youkuaiyun.com/a7452CPU高速缓存集成于CPU的内部,其是CPU可以高效运行的成分之一,本文围绕下面三个话题来讲解CPU缓存的作用:为什么需要高速缓存?高速缓存的内部结构是怎样的?如何利用好cache,优化代码执行效率?为什么需要高速缓存?在现代计算机的体系架构中,为了存储数据,引入了下面一些元件1.CPU寄存器2.CPU高速缓存3.内存4.硬盘从1-&gt...

关注微信公众号【开源Linux】,后台回复『10T』,领取10T学习资源大放送,涵盖Linux、虚拟化、容器、云计算、网络、Python、Go等书籍和视频 501

缓存的那些事儿:从原理到实践,让你的系统飞起来!

缓存优化实践与挑战 本文系统介绍了计算机系统中缓存技术的原理与应用。从CPU三级缓存的硬件设计,到操作系统页缓存、数据库Buffer Pool的实现,再到分布式缓存Redis的架构,揭示了缓存如何利用局部性原理提升系统性能。文章深入分析了缓存淘汰策略(LRU/LFU)的优劣,并分享了Web应用中的多层缓存实践。同时指出了缓存一致性、穿透、雪崩等常见问题的解决方案,通过真实案例展示了缓存优化的实际效果。缓存作为性能优化的核心手段,其设计与实现需要权衡速度、一致性和资源利用率等多方面因素。

qq_31815769的博客 952

架构师必备,了解分层架构中缓存那点事儿

无论是CDN缓存加速,还是CPU的三级缓存,又或者是在如今互联网时代流量红利所带来的高并发结构客户端,而不得不使用缓存架构。缓存,对于技术人来说,是一个必须直面的名词。 然而,如何清晰明了的选择缓存服务以及如何在设计架构时使用缓存去优化业务,对于我们很多人来说,一直以来都比较迷惑,本文从这一点出发,简单介绍了缓存概念和分布式缓存服务的一些应用场景。 缓存的必...

优快云资讯 2177

分布式缓存那些事儿

在前面的一些文章中,从实战的角度,讲解了有关memcached的应用、容灾、监控等等。但是缺乏对理论的讲解和原理性的剖析。本文将从理论的角度去介绍,让大家从宏观上对“分布式缓存、nosql”等技术有所了解,以便进一步学习和使用。在构建大规模的web应用时,缓存技术可以说是必备的,学习的必要性不言而喻。分布式缓存概述1.1 分布式缓存的特性分布式缓存具有如下特性:1) 高性能:当传统数据库面临大规模

丁码农 3万+

内核最新知识,CPU高速缓存那些事儿?

引言:在分析JDK8新增的高并发原子累加器Striped64的时候,发现有一个“伪共享”的概念,而要理解它必须对CPU缓存有一定的了解,所以本文将先对CPU的缓存架构以及一些相关术语做一个研究探索。 CPU缓存的原理 众所周知,在如今的计算机时代,CPU的运算处理速度与内存读写速度的差异非常巨大,为了解决这种差异充分利用CPU的使用效率,CPU缓存应运而生,它是介于CPU处理器和内存之间的临时数据交换的缓冲区。 CPU缓存和内存都是一种断电即掉的非永久随机存储器RAM,那么它和内存在物理上有什么差异吗

csbmww的博客 981

「性能优化专题」缓存的那些事儿

利用缓存做性能优化的案例非常多,从基础的操作系统到数据库、分布式缓存、本地缓存等。它们表现形式各异,却有着共同的朴素的本质:弥补CPU的高算力和IO的慢读写之间巨大的鸿沟。 和架构选型类似,每引入一个组件,都会导致复杂度的上升。以缓存为例,它带来性能提升的同时,也带来一些问题,需要开发者设计和权衡。 本文的思维脉络如下: 一 缓存和多级缓存 1 缓存的引入 在初期业务量小的时候,数据库能承担读写压力,应用可以直接和DB交互,架构简单且强壮。 经过一...

你走过的路 风都是暖的 312
上一篇: “低代码”十问,你能回答吗?
下一篇: 本地使用 Docker Compose 与 Nestjs 快速构建基于 Dapr 的 Redis 发布/订阅分布式应用
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值