首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Redis缓存在内存中过期

Spring Redis缓存在内存中过期
EN

Stack Overflow用户
提问于 2022-09-21 15:36:32
回答 1查看 140关注 0票数 0

使用Spring缓存,并想知道是否可以在内存中设置一些数据缓存持续时间。缓存的缓存。如果我知道Redis中的数据在5分钟内不会改变,那么每次调用@Cacheable方法时,我都不需要让Spring缓存触摸Redis。是Redisson的答案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-22 19:50:10

AFAICT,雷迪森只是一个客户端外观或增强型Redis (Java)客户端,用于以更强大和方便的方式与Redis节点(或集群)接口,这与春季数据红宝石没有什么不同。例如,正如您已经知道的,Spring的缓存抽象中的将Redis用作

在使用Redis客户机/服务器拓扑时,Redis似乎确实支持客户端缓存 (除了远程(服务器)缓存之外的本地缓存)。这对您的应用程序(例如@Cacheable)是透明的,并在Redis客户端驱动程序AFAIK中配置。

然而,考虑到我对Redis,甚至Redisson缺乏经验,我不能详细讨论这个特性。Redis客户端缓存可能需要由Redis客户端驱动程序支持(例如吉迪斯生菜、甚至Redisson等)。

现在,对感兴趣的读者来说,长篇大论的回答是:

您在声明“缓存缓存”传闻时所描述的是,除了“远程或服务器端缓存”之外,实际上还有一个“本地可用的缓存”。当然,这假定您在客户机/服务器(不是嵌入式)中运行Redis,并且可能首先运行分布式/集群(可能是HA)的容量。

理想情况下,您可以选择一个缓存提供程序,该缓存提供程序本机支持这种安排。而且,尽管流行的观点(对于示例),许多Redis“重新发明”(横向扩展或集群,HA,甚至持久性)已经存在于其他更成熟的解决方案中,这些解决方案都是从底层构建的,考虑到了这些问题。

SIDENOTE:当然,上面提到的文章是过时的,但也有点天真。

“缓存的(a)缓存”在技术上称为接近缓存的 pattern

在这种情况下,“本地”(应用程序/客户端)缓存镜像“远程”(服务器端和主)缓存,以避免网络跳(即延迟),只在必要时访问远程缓存(例如缓存失败),最好是在服务器端分布和集群时以“单跳”、“容错”的方式访问。

然而,本地缓存与服务器端远程缓存之间的一个根本区别是,本地缓存仅根据“兴趣”存储来自远程缓存的数据子集。

注:在Redis的文档中,他们将其称为“跟踪”。在不同的提供者之间,有不同的方式来表达“兴趣”或跟踪客户端访问的内容。这里要注意不同的方法,因为它们消耗了不同的系统资源。

您可能有一个分布式(Web / Microservice)应用程序体系结构,其中几个客户端应用程序实例为不同的人口统计或最终用户群体提供服务。显然,这些客户端应用程序实例可能使用存储在服务器中的主数据集的共享子集,但使用不同的子集。这就是本地缓存和“注册兴趣”仅在对客户端应用程序重要或由客户端应用程序使用的数据中起作用的地方。

“注册兴趣”很重要,因为服务器端远程缓存可以通知承载本地缓存的客户端("push",而不是客户端“拉”),当服务器上的数据发生更改时,客户端感兴趣的更改是因为超过一个客户端可能感兴趣并使用相同的数据(例如“记录”,以及数据的交集)。

那么,我们如何在不不必要地在系统/应用程序体系结构中引入额外(层)复杂性的情况下,正确地解决这一问题呢?

首先,它从为当前问题选择正确的缓存提供程序开始。

免责声明:我的经验来源于Apache Geode,这是VMware坦桑尼亚人GemFire的开放源码变量,我负责VMware的Apache 的所有事情-- Spring。

虽然我在这里有一点偏见,但对于其他缓存提供者(以及完整的IMDG解决方案)来说,支持同样的安排并不少见。例如,我个人最喜欢的一个是Hazelcast。

Hazelcast将这种特定的缓存安排或拓扑称为“嵌入式”缓存,甚至在文档中将其称为“近缓存”。

一个本地的,嵌入的“近缓存”的好处是它避免了通过不必要的网络跳的延迟,然而,兴趣注册是保持数据尽可能一致的关键。

我在文档这里近缓存中使用Spring时,以及与其他缓存模式一起使用样本中的近缓存示例时,记录、讨论甚至演示了不同的缓存模式。

我相信您可以在其他缓存提供程序,甚至Redis中找到类似的资源。

无论如何,这些文档应该帮助您理解在选择任何拓扑和配置时要注意的不同关注点(例如内存消耗)。

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73803505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档