百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Redis之旁路缓存

nanshan 2025-03-10 18:53 3 浏览 0 评论

Redis之旁路缓存

Redis作为缓存中间件早已深入人心,但我们有没有想过Redis为什么能作为缓存呢?Redis到底怎样使用缓存呢?本篇文章详细聊聊。

Redis为什么能作为缓存

聊Redis为什么能作为缓存前先需要清楚缓存的作用,我们在很多场景都有接触过缓存就如Redis本身的输入输出缓存、复制缓冲区、复制积压缓存区等等,又如操作系统本身的LLC,page cache缓存等等,这些缓存的主要作用是什么呢?是在一个多层次系统中平衡上下级系统的速度差异。

这里以操作系统为例说明,操作系统的存储结构一般为CPU、内存、磁盘三大块,其中CPU读取速度最快只有几十纳秒,内存读取需要100多纳秒,而磁盘的读取速度是毫秒,这样看可能没有什么对比效果,我们看下下面的单位换算,内存和磁盘的速度差异可是差了数量级的。

1秒 = 1000 毫秒 = 1000000 微秒 = 1000000 纳秒

根据木桶定理,一个木桶装多少水是由木桶的最短板决定,所以在操作系统上如果处理数据,磁盘的读取过慢,CPU将空闲大量的时间,这显然是不合理的,所以引入了缓存的概念。

  • CPU中的末级缓存即LLC用于平衡CPU和内存间的速度差异,避免每次从内存中取数据。
  • 内存中高速缓存页即page cache,用于平衡内存和磁盘中的速度差异,避免每次都从磁盘中取数据。

看到这里就可以得到缓存的一些特征如下

  • 第一在一个多层次系统上缓存一定是一个快速的系统,这样才能平衡层次系统的速度差异。
  • 第二CPU、内存中包含的缓存比它需要平衡的系统小,如LLC就不可能存下内存中的所有数据,所以我们需要有内存淘汰的思想。

到这里缓存的特性就聊完了,那么Redis是否符合呢?显然是可以的

  • Redis运行在内存中而且存在丰富的数据结构以及应用了多路复用IO模型,速度上远超其它数据库,符合第一点速度快的要求。
  • Redis本身自带内存淘汰机制,能根据淘汰规则自动淘汰键值,符合内存淘汰要求。

旁路缓存使用

使用缓存一般的操作都是

  • 读取数据前先从Redis中读取。
  • 如果读取数据在缓存中不存在就需要在数据库中读取。
  • 更新缓存。

那么这些操作是怎么进行的呢?这就和旁路缓存有关,下面详细聊聊。

什么叫旁路缓存

Redis应用于生产上一般是一个独立的程序和业务程序分开,只能被动等待客户端的调用,我们如果在程序中使用还要加入Redis的调用代码,所以我们也将Redis称为旁路缓存,读取缓存和更新缓存都是在业务系统中完成。这和上面提到的操作系统的CPU缓存LLC,内存缓存page cache有本质区别,LLC和page cache从系统初始化就存在系统调用的主路径上,不需要其它业务系统主动调用。

缓存类型

Redis根据请求的类型分为只读缓存和读写缓存,这是针对客户端发送的写请求是否在Redis中修改进行区分。

只读缓存

只读缓存只提升缓存的读性能,当客户端发送一个读请求时Redis从缓存中查找是否存在,如果存在直接返回,不存在就从数据库获取,写入缓存中同时返回客户端,如果是写请求,直接修改数据库数据然后将缓存中的对应键值删除。

这样可以保证数据库中的数据都是最新的,而且数据不会丢失。

读写缓存

读写缓存可以提升读写效率,这与只读缓存不同的是,读写缓存会在Redis中做增删改的操作,Redis中的数据将是最新的一份,这样就能快速的响应客户端,但是数据一直放在内存中显然是不可靠的,如果出现Redis宕机将丢失数据,所以这里又提供了两种写回数据库的策略,同步写回和异步写回。

同步写回表示,当客户端发送一个写请求过来会同时更新缓存和数据库,两者全部更新完毕才会返回,这样会降低处理性能,但能提升可靠性。

异步写回表示,当客户端发送一个写请求过来会先更新缓存,更新完后直接返回客户端,仅当写入后的数据淘汰出内存后才会写入数据库,这样保证了性能,但是可靠性降低了。

如何选择缓存类型

需要根据业务出发,如果是读多写少的场景,那么使用只读缓存就可以解决,而需要给写加速的场景肯定选择读写缓存但使用读写缓存需要注意数据写回策略,需要在数据可靠性和性能两个方面做取舍。

相关推荐

小白初学linux之无法修改系统分辨率

/*此文是做为自己的一个总结还有就是最好也可以给大家提供一些帮助。*/时间:2020年7月14日11:28:41我安装的是Ubuntu20.04LTS,昨天处理的是,grub的引导问题,因为是...

Ubuntu 如何启动、停止或重启服务

在本文中,我们向您介绍在Ubuntu中启动、停止和重启服务的方法。列出Ubuntu中的所有服务在开始之前,先获取计算机上所有服务的列表,因为我们需要知道服务名称来管理服务。service--...

Win11学院:如何在Windows 11上使用WSL安装Ubuntu

IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...

Linux安装中文输入法-Google拼音输入法,搜狗输入法

主要步骤,选择适合自己的尝试:1)卸载之前没装好的搜狗输入法。@:~/Downloads$sudoapt-getremovefcitx*删除依赖库@:~/Downloads$sudoap...

Ubuntu 22.04 请谨慎使用搜狗输入法,可能是你当机原因

在Ubunutu下没有什么有名的输入法,也就听说搜狗输入法有Linux版本,所以特意到官网去找了下载。在Ubuntu新版本里,他仍然用的是fcitx框架的输入引擎,而不是默认的ibus,所以要先把i...

前钢后胶!徐工XMR403VT小型压路机有点意思

【第一工程机械网原创】在越来越注重施工品质,对项目管理越来越精细化的今天,施工方在施工设备选择上,也越来越讲究设备的配套分工,因此小型压路机的应用场景也越来越多。徐工XMR403VT小型压路机高度集...

图大明白 | 404错误为什么是Not Found?为什么是404?

“404错误”大家都不陌生吧?常规来讲它长这样或者长这样艺术一点的长这样404NotFound意思就是所请求的页面不存在或者已被删除被称为“互联网最后一个界面”有很多同学发出疑问:为什么是404?...

Nginx负载均衡安全配置说明2(nginx负载均衡部署)

上一节,我们对Nginx安全配置的几个知识点做了一个说明,例如限制IP访问、文件目录禁止访问限制、需要防止DOS攻击、请求方法的限制和限制文件上传的大小这个进行了一个分析说明,详细的文章请关注我的头条...

惊艳写真系列第403期,本期主人公—叶青

惊艳写真系列第403期,本期主人公—叶青制作不易,欢迎各位看官提供宝贵意见。如果您喜欢记得关注,么么哒。您的每一份点赞和关注都是对作者的最大认可(图片素材均来源于网络,如有侵权联系删除。)本篇是写惊艳...

先秦布币之尖足布、圆足布、方足布,今年圆足最高拍卖价16万一枚

在战国魏、韩地区诞生桥足平首布、锐角平首布之后,赵也诞生了尖足平首布,并且在尖足布的基础上,后来相继派生出了圆足布、三孔布,以及类圆足布和类方足布。一尖足布尖足布是从耸肩尖足空首布演变而来的,是黄河...

403 禁止访问错误的全面排查与解决方案

当遇到403Forbidden错误时,意味着服务器已接收并理解请求,但拒绝执行访问操作。以下从用户端、服务器端等多个维度,提供分步排查与解决方法。一、用户端基础排查1.检查URL准确性确认...

这才是2019年夏最高颜值的泳装(2019夏季泳装秀)

最近的天气是越来越热了,又到了暑期泳衣勇闯海滩的时刻了,打开ins,微博满满地都是各大博主晒的泳装照,明星们也纷纷跑到海边去度假了。虽然我们没有超模般地身材,但是到了海边我们也要成为人群中最亮眼的那颗...

朋友圈爆火!这组《衡中班主任的一天》漫画,感动了无数人!

很多人觉得做老师很轻松他们说有些老师一天一节课就下班了有双休,还有寒暑假,真让人羡慕呀······但事实真是这样吗?最近衡水中学的赵心扬同学画了一组漫画形象地还原了衡中班主任一天的生活那么衡中班主任一...

国家安全教育 | 一组漫画,带你走进国家安全!

当前,我国面临哪些安全威胁?下面带你来看一组漫画!①你要配合,注意保密。我绝不对别人讲。②这件事,千万别对别人讲。③咱单位的…喂!老k!你要当心,有风声了!④你的泄密行为已触犯了国家法律!①请你协助了...

400、403、404、405,访问网页时出现这些代码是什么意思?

今天小泽访问一个页面时,出现了403,很抱歉,您的访问请求被禁止的提示。相信经常用电脑访问网页的朋友都遇到过这种情况,有的网页提示错误代码403,有的提示404,那这些代码都代表了什么呢?有什么含义呢...

取消回复欢迎 发表评论: