Spring Boot 3.2项目中使用缓存Cache的正确姿势!!!

这篇具有很好参考价值的文章主要介绍了Spring Boot 3.2项目中使用缓存Cache的正确姿势!!!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

你是否曾想过为什么在 Spring Boot 应用中缓存是如此重要?答案在于它通过减少数据检索时间来提高性能。在本文中,我们将深入探讨缓存对微服务模式的影响,并探讨根据操作易用性、速度、可用性和可观测性等因素选择正确缓存的重要性。我们还将探讨如何最大程度地提高缓存性能和可用性。

1 缓存实现

1.1 缓存对微服务模式的影响

考虑这样的情景,其中一个 Edge API 开放给互联网,触发对服务 A 和 B 的额外请求,这两个服务反过来调用服务 C 和 D。通过引入客户端缓存,可以显著提高应用程序性能并打破这种依赖链。

1.2 选择正确的缓存

在选择正确的缓存之前,我们必须了解我们应用的需求,并根据以下因素选择缓存:

  1. 操作易用性 — 是否需要向系统添加新组件?
  2. 速度 — 从缓存检索或设置值需要多长时间?
  3. 可用性 — 它如何提高系统的整体可用性?
  4. 可观测性 — 系统的状态推理有多容易?

2 缓存类型

有三种不同类型的缓存:

2.1. 本地缓存

  • 仅限于应用程序/节点运行的本地实例
  • 由于数据存储在本地,所以速度更快
  • 由于数据与其他缓存不共享,缺乏一致性
  • 在需要在多个节点之间共享大量数据的情况下效率低
  • 用例场景:当数据特定于单个实例且不需要在不同实例之间共享数据时

Spring Boot 3.2项目中使用缓存Cache的正确姿势!!!

2.2. 分布式缓存

  • 由于缓存在多个实例之间共享,缓存的数据可由系统中的任何节点访问(用例:多个实例需要共享一个公共缓存)
  • 由于网络延迟,从远程节点访问数据可能需要一些时间,但并非总是如此
  • 由于每个实例将其更改传播到其他节点,因此一致性
  • 可高度扩展

Spring Boot 3.2项目中使用缓存Cache的正确姿势!!!

2.3. 分层缓存

  • 每个客户端副本都保留本地缓存和远程缓存,作为回退
  • 这类似于 CPU 缓存
if local_cache_hit(request):
  return get_from_local_cache(request)
else:
  if remote_cache_hit(request):
    return get_from_remote_cache(request)
  else:
    response = call_a(request)
    set_local_cache_in_background(response)
    set_remote_cache_in_background(response)
    return response

每种缓存的目标都是最大程度地增加缓存命中,以提高系统的整体性能。那么在实际设置中,当我们有定期更新的动态数据并且还存储缓存内容以获得所需输出时,我们该如何做呢?

可为缓存设置生存时间(TTL)。如果我们为我们的缓存设置长时间的 TTL,比如近 24 小时,我们可能会读取陈旧的数据,另一方面,较短的 TTL 将增加新鲜度,但经常调用服务器可能会导致可用性和延迟问题。

我们将讨论一些策略,如面向事件驱动架构的主动失效和对于服务器不发出事件的情况下的后台刷新。

  1. 主动失效 → 用于事件驱动架构的最常见用法。每当服务器发出事件时,客户端都会监听它并更新缓存并清除不必要的缓存数据。我们可以设置较长的 TTL,知道过时的条目将被主动失效。
  2. 后台刷新 → 如果服务器不发出事件,我们可以在后台刷新条目,即使是缓存命中。我们的数据可能会变得不那么陈旧,而延迟将大大降低。

3 结论

实质上,在 Spring Boot 中进行缓存是提高性能的关键。从打破依赖关系到优化命中,它是微服务世界中高效和响应性系统的重要工具。

参考

  • [32. Caching - Spring Framework Documentation](

本文由博客一文多发平台 OpenWrite 发布!文章来源地址https://www.toymoban.com/news/detail-748974.html

到了这里,关于Spring Boot 3.2项目中使用缓存Cache的正确姿势!!!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自定义redission装配和集成分布式开源限流业务组件ratelimiter-spring-boot-starter的正确姿势

    自定义redission装配和集成分布式开源限流业务组件ratelimiter-spring-boot-starter的正确姿势   由于使用了redisson-spring-boot-starter,在自定义redisson装配的时候会被redisson-spring-boot-starter里面的start默认装配了,同时在使用开源分布式限流组件ratelimiter-spring-boot-starter的时候,这个里面

    2024年02月07日
    浏览(55)
  • 提高代码质量!详解在Gradle项目中使用PMD的正确姿势

    当今的软件开发需要使用许多不同的工具和技术来确保代码质量和稳定性。PMD是一个流行的静态代码分析工具,可以帮助开发者在编译代码之前发现潜在的问题。在本文中,我们将讨论如何在Gradle中使用PMD,并介绍一些最佳实践。 PMD是一个用于Java代码的静态代码分析工具。

    2023年04月10日
    浏览(45)
  • spring boot 3.2 使用restClient忽略ssl

    2024年02月20日
    浏览(61)
  • 【SpringBoot篇】使用Spring Cache高效处理缓存数据

    Spring Cache是一个框架,只要简单加一个注解,就能实现缓存功能。Spring Cache是Spring Framework提供的一个模块,它为应用程序添加了缓存支持。通过使用Spring Cache,你可以在方法级别上定义缓存规则,将方法的返回结果缓存起来,以提高方法调用的性能和响应速度。 是一个框架,只要简

    2024年02月05日
    浏览(59)
  • 什么是Spring Cache?Spring项目如何使用?

    目前Spring Cloud微服务在Web项目中占据了主流地位,如果去面试关于Spring Cloud的岗位时,面试官一般都会提问你的项目是如何优化的,从哪些方面入手去优化。而缓存技术绝对是项目必不可少的,所以我们必须掌握好Java项目的缓存技术。 目前,在 Java 中,常见的缓存有以下几

    2024年02月05日
    浏览(77)
  • Spring | Spring Cache 缓存框架

    Spring Cache 是 Spring 的一个框架, 实现了基于注解的缓存功能 。只需简单加一个 注解 ,就能实现 缓存功能 。 Spring Cache提供了一层抽象 , 底层可以切换不同的缓存实现 。比较 常见 的(底层) 缓存实现 有: Redis、EHCache、Caffeine 。可自定义地修改 Spring Cache 底层的 缓存实现 。

    2024年02月08日
    浏览(46)
  • Spring Cache框架(缓存)

    1、介绍: Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单加个注解,就能实现缓存功能。它提供了一层抽象,底层可以切换不同的cache实现。具体就是通过 CacheManager 接口来实现不同的缓存技术。 针对不同的混存技术需要实现不同的 CacheManage r: CacheManager 描述

    2024年02月11日
    浏览(62)
  • 【springboot】Spring Cache缓存:

    一、导入Maven依赖: 二、实现思路: 三、代码开发:

    2024年02月11日
    浏览(46)
  • 简述Spring Cache缓存策略

    Spring框架提供了一种名为Spring Cache的缓存策略。Spring Cache是一种抽象层,它提供了一种方便的方式来管理缓存,并与Spring应用程序中的各种缓存实现(如EhCache、Guava、Caffeine等)集成。 Spring Cache使用注解(如@Cacheable、@CachePut、@CacheEvict等)来描述与缓存相关的操作。这些注解

    2024年02月10日
    浏览(51)
  • Spring Boot 3.2 + CRaC = 王炸!

    原文:https://foojay.io/today/springboot-3-2-crac/ 前段时间发布了 Spring 6.1 和 SpringBoot 3.2,它们都完全支持 CRaC(检查点协调恢复)。 如果你想了解有关 CRaC 的更多信息,请随时阅读此处: https://docs.azul.com/core/crac/crac-introduction CRaC 是一个 OpenJDK 项目,可以“快照”正在运行的 JVM(

    2024年02月04日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包