iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >缓存服务的更新策略有哪些?
  • 186
分享到

缓存服务的更新策略有哪些?

2024-04-02 19:04:59 186人浏览 八月长安
摘要

在互联网项目开发中,缓存的应用是非常普遍了,缓存可以帮助页面提高加载速度,减少服务器或数据源的负载。 1、为什么需要缓存? 一般在项目中,最消耗性能的地方就是后端服务的数据库了。而数据库的读写

互联网项目开发中,缓存的应用是非常普遍了,缓存可以帮助页面提高加载速度,减少服务器或数据源的负载。

1、为什么需要缓存?

一般在项目中,最消耗性能的地方就是后端服务的数据库了。而数据库的读写频率常常都是不均匀分布的,大多情况是读多写少,并且读操作(select)还会有一些复杂的判断条件,比如 like、group、join 等等,这些语法是非常消耗性能的,所有会出现很多的慢查询,因此数据库很容易在读操作的环节遇到瓶颈。

那么通过在数据库前面,前置一个缓存服务,就可以有效的吸收不均匀的请求,抵挡流量波峰。

另外,如果应用与数据源不在同一个服务器的情况下,中间还会有很多的网络消耗,也会对应用的响应速度有很大影响,如果当前应用对数据实时性的要求不那么强的话,在应用侧加上缓存就能很快速的提升效率。

2、那使用缓存会遇到哪些问题呢?

虽然缓存可以提高整体性能,但是它也可能会带来别的问题。例如使用缓存之后,就相当于把数据存放了2份,一份是在数据库中,另一份存放在缓存中。当有新的数据要写入或者旧数据需要更新的时候,如果我们只更新了其中一份数据源,那两边的数据就不一致了,所以这里就存在一个缓存数据与数据库数据如何进行有效且快速的同步问题,才可以保证数据的最终一致性。

另外,加上缓存服务其实也引入了系统架构的复杂度,因为还需要额外的关注缓存自身带来的下列问题:

  • 缓存的过期时间问题:设计缓存的过期时间需要非常的有技巧,且必须与业务实际情况相结合。因为如果设计的过期时间太短了,那会导致缓存效果不佳,且还会造成频繁的从数据库中往缓存里写数据。如果缓存设计的过期时间太长了,又会导致内存的浪费。

  • 缓存的命中率问题:这也是设计缓存中需要存放哪些数据的很重要一点,如果设计的不好,可能会导致缓存命中率过低,失去缓存效果。一般对于热点数据而言,要保证命中率达到70%以上效果最佳。

  • 缓存的穿透/雪崩问题:是指如果缓存服务一旦宕机或全部丢失,那么有可能一瞬间所有的流量都直接打到了后端数据库上,可能会造成连反应,瞬间的请求高峰极有可能导致数据库无法承载。

3、缓存的更新策略具体有哪些?

典型的缓存模式,一般有如下几种:

  • Cache Aside

  • Read/Write Through

  • Write Behind

每种模式都有不同的特点,适应与不同的项目场景,下面来依次看看:

Cache Aside 模式

缓存服务的更新策略有哪些?

这是大家经常用到的一种策略模式。这种模式主要流程如下:

应用在查询数据的时候,先从缓存Cache中读取数据,如果缓存中没有,则再从数据库中读取数据,得到数据库的数据之后,将这个数据也放到缓存Cache中。

如果应用要更新某个数据,也是先去更新数据库中的数据,更新完成之后,则通过指令让缓存Cache中的数据失效。

这里为什么不让更新操作在写完数据库之后,紧接着去把缓存Cache中的数据也修改了呢?

主要是因为这样做的话,就有2个写操作的事件了,担心在并发的情况下会导致脏数据,举个例子:假如同时有2个请求,请求A和请求B,并发的执行。请求A是要去读数据,请求B是要去更新数据。初始状态缓存中是没有数据的,当请求A读到数据之后,准备往回写的时候,此刻,请求B正好要更新数据,更新完了数据库之后,又去把缓存更新了,那请求A再往缓存中写的就是旧数据了,属于脏数据。

那么 Cache Aside 模式就没有脏数据问题了吗?不是的,在极端情况下也可能会产生脏数据,比如:

假如同时有2个请求,请求A和请求B,并发的执行。请求A是要去读数据,请求B是要去写数据。假如初始状态缓存中没有这个数据,那请求A发现缓存中没有数据,就会去数据库中读数据,读到了数据准备写回缓存中,就在这个时候,请求B是要去写数据的,请求B在写完数据库的数据之后,又去设置了缓存失效。这个时候,请求A由于在数据库中读到了之前的旧数据,开始往缓存中写数据了,此时写进入的就也是旧数据。那么最终就会导致,缓存中的数据与数据库的数据不一致,造成了脏数据。

不过这种概率比上面一种概率要小很多。所以整体而言 Cache Aside 模式 还是一种比较简单实用的方式。

Read/Write Through 模式


缓存服务的更新策略有哪些?

这个模式其实就是将 缓存服务 作为主要的存储,应用的所有读写请求都是直接与缓存服务打交道,而不管最后端的数据库了,数据库的数据由缓存服务来维护和更新。不过缓存中数据变更的时候是同步去更新数据库的,在应用的眼中只有缓存服务。

流程就相当简单了:

应用要读数据和更新数据都直接访问缓存服务

缓存服务同步的将数据更新到数据库

这个模式出现脏数据的概率就比较低,但是就强依赖缓存了,对缓存服务的稳定性有较大要求,另外,增加新缓存节点时还会有初始状态空数据问题。

Write Behind 模式

这个模式就是 Read/Write Through 模式 的一个变种。区别就是 Read/Write Through 模式的缓存写数据库的时候是同步的,而 Write Behind 模式 的缓存操作数据库是异步的。

流程如下:

应用要读数据和更新数据都直接访问缓存服务

缓存服务异步的将数据更新到数据库(通过异步任务)

这个模式的特点就是速度很快,效率会非常高,但是数据的一致性比较差,还可能会有数据的丢失情况,实现逻辑也较为复杂。

以上就是目前三种主流的缓存更新策略,另外还有Refrsh-Ahead模式等由于使用的不是很常见就不详细介绍了。

缓存是互联网项目中非常普遍的一个提高效率的方案,用法比较多,也比较关键,大家可以一起交流。

本文转自微信公众号:不止思考  作者:奎哥

原文链接:https://mp.weixin.qq.com/s/GhTJ0rbxDrVO_Q5YRcKb0w

您可能感兴趣的文档:

--结束END--

本文标题: 缓存服务的更新策略有哪些?

本文链接: https://www.lsjlt.com/news/48448.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 缓存服务的更新策略有哪些?
    在互联网项目开发中,缓存的应用是非常普遍了,缓存可以帮助页面提高加载速度,减少服务器或数据源的负载。 1、为什么需要缓存 一般在项目中,最消耗性能的地方就是后端服务的数据库了。而数据库的读写频...
    99+
    2022-10-18
  • redis缓存策略有哪些
    小编给大家分享一下redis缓存策略有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!将Redis用作缓存时, 如果内存空间用...
    99+
    2022-10-18
  • Redis缓存中的淘汰策略有哪些
    本篇内容主要讲解“Redis缓存中的淘汰策略有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis缓存中的淘汰策略有哪些”吧!我们知道Redis缓存使用...
    99+
    2022-10-18
  • PHP开发缓存的数据存储与更新策略
    PHP开发缓存的数据存储与更新策略,需要具体代码示例在Web应用程序中,缓存是提高性能和响应速度的重要工具。缓存可以大大减少资源获取的时间和响应的延迟,从而提高系统的效率和用户的满意度。在PHP开发中,缓存技术的应用和优化是非常重要的,本文...
    99+
    2023-11-07
    缓存 数据存储 PHP开发
  • 浅谈Redis缓存有哪些淘汰策略
    目录Redis过期策略 定时删除 惰性删除 定期删除 Redis的内存淘汰机制 LRU和LFU的区别 LRU LFU Redis重启如何恢复数据呢? 总结Redis过期策略 我们首...
    99+
    2022-11-12
  • redis缓存的更新方法有哪些
    Redis缓存的更新方法有以下几种:1. 更新缓存数据:直接更新缓存中的数据,可以使用`SET`命令或者其他适合的命令来更新缓存中的...
    99+
    2023-08-23
    redis
  • 如何在Java中实现高效的缓存更新策略?
    Java作为一种广泛使用的编程语言,其缓存机制是一个不可或缺的部分。在实现高效的缓存更新策略时,我们需要考虑多种因素,如缓存的大小、缓存的存储方式以及缓存的更新频率等等。本文将为您介绍如何在Java中实现高效的缓存更新策略,以提高应用程序的...
    99+
    2023-10-05
    缓存 分布式 编程算法
  • MySQL数据库和Redis缓存一致性的更新策略
    目录一、更新策略二、读写缓存1、同步直写策略2、异步缓写策略三、双检加锁策略四、数据库和缓存一致性的更新策略1、先更新数据库,再更新Redis2、先更新缓存,再更新数据库3、先删除缓存,再更新数据库延时双删4、先更新数据...
    99+
    2023-04-12
    MySQL和Redis缓存一致性更新 MySQL和Redis缓存一致性
  • MySQL数据库和Redis缓存一致性的更新策略是什么
    这篇文章主要介绍“MySQL数据库和Redis缓存一致性的更新策略是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL数据库和Redis缓存一致性的更新策略是什么”文章能帮助大家解决问题。...
    99+
    2023-07-06
  • Angular中的onPush变更检测策略有哪些
    这篇文章给大家介绍Angular中的onPush变更检测策略有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。默认的变更检测策略默认情况下,Angular使用ChangeDetect...
    99+
    2022-10-19
  • 云服务器安全策略有哪些
    云服务器安全策略包括但不限于: 数据备份:云服务器提供的数据备份服务应该确保备份的数据不会遭到意外删除、格式化、重启,以避免数据丢失。 访问控制:云服务器采用的访问控制机制应该可以防止未经授权的访问。应该限制特定的用户或者实例对服务器的...
    99+
    2023-10-26
    安全策略 服务器 有哪些
  • cc防御服务器策略有哪些
    cc防御服务器策略有:1、在iis上取消网站域名绑定,让CC攻击丧失总体目标;2、更改默认的Web端口,能有效防御CC攻击;3、在i...
    99+
    2023-02-08
    cc防御
  • 新加坡服务器常用网络安全策略有哪些
    新加坡服务器常用的网络安全策略包括:1. 防火墙:设置网络防火墙来过滤和监控网络流量,防止未经授权的访问和攻击。2. 加密通信:使用...
    99+
    2023-10-11
    服务器
  • PHP缓存函数有哪些可以实时更新的?
    PHP作为一门流行的开发语言,提供了丰富的缓存函数,以提高网站的性能和响应速度。而在这些缓存函数中,有一些是可以实时更新的。本文将介绍这些可以实时更新的缓存函数,并提供相应的演示代码。 一、APC(Alternative PHP Cach...
    99+
    2023-08-11
    缓存 函数 实时
  • 亚马逊的产品服务策略有哪些
    产品策略:亚马逊提供丰富的产品选择,包括品牌产品、自有品牌、第三方品牌、亚马逊自有品牌等,以满足消费者不同的需求和偏好。同时,亚马逊也在不断加强自有品牌的建设,通过定位自己的品牌,打造独特的产品优势,提高用户忠诚度。 价格策略:亚马逊在价...
    99+
    2023-10-27
    亚马逊 策略 有哪些
  • 服务器防御高防策略有哪些
    1. 硬件防御:使用高性能的硬件设备,如防火墙、负载均衡器、入侵检测系统等,以及优化网络架构,提高网络抗攻击能力。2. 软件防御:使...
    99+
    2023-06-05
    服务器防御高防 服务器
  • 华为云服务器备份策略有哪些
    华为云服务器备份策略主要有以下几种: 1.手动备份 手动备份是最基本的备份方式,用户可以在需要备份的时候手动进行备份。华为云提供了云服务器控制台和API接口,用户可以通过这些方式进行手动备份。手动备份的优点是备份时间和备份内容可以自由控制...
    99+
    2023-10-27
    华为 备份 策略
  • 云服务器安全策略有哪些内容
    云服务器安全策略主要包括以下内容: 访问控制:云服务器需要用户名和密码才能使用,并且可以限制某些用户访问云服务器,避免恶意攻击行为。 防止数据泄露:在使用云服务器的过程中,需要保护数据的安全,例如使用SSL证书保护数据传输过程中的加密,...
    99+
    2023-10-27
    安全策略 服务器 内容
  • 云服务器安全策略有哪些类型
    云服务器安全策略可以分为以下几类: 访问控制:云服务器提供强制访问控制和非法访问控制。这意味着服务器需要在访问客户端的时候被检测,并且可以通过设置不同的访问权限和监控机制,来控制访问。 审计跟踪:云服务器可以提供审计跟踪功能,记录任何未...
    99+
    2023-10-27
    安全策略 类型 服务器
  • 云服务器成本优化策略有哪些
    一、选择合适的云服务器供应商 在选择云服务器供应商时,需要考虑以下几个因素: 供应商的规模和实力 选择规模和实力较大的云服务器供应商,能够提供更全面、更稳定、更可靠的云服务器服务,从而更好地满足企业的需求。 供应商的服务质量 云服...
    99+
    2023-10-28
    成本 策略 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作