首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果仅用于简单缓存,Redis缓存是否比Spring缓存有优势?

如果仅用于简单缓存,Redis缓存是否比Spring缓存有优势?
EN

Stack Overflow用户
提问于 2022-05-02 21:02:27
回答 1查看 1.4K关注 0票数 2

我对缓存的东西和学习一些不同的解决方案,我的春季启动应用程序。我看的是Spring,它是一个简单的缓存机制(这就是我所寻找的),而不是我看到的redis缓存。还有很多资源,比如"spring+redis缓存“。当我看简单的用法时,我看不出有什么不同。即使是注释也是相同的(缓存、CacheEvict、CachePut等),除了额外的redis配置和redis停靠容器等,我看不到使用上的不同。而这些spring+redis缓存文章都没有说明仅仅spring缓存和spring+redis缓存之间有什么区别。

与spring缓存相比,redis缓存的优势是什么?或者,您能告诉一个简单的用例,我确实需要使用redis缓存,而我不能用spring缓存来实现它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-09 17:53:59

从实现的角度来看,没有所谓的"Spring缓存“。但是,https://docs.spring.io/spring-framework/docs/current/reference/html/integration.html#cache提供了通用的缓存功能,它起源于核心的Spring框架。

缓存抽象从根本上说是一个适配器,允许将不同的缓存提供程序插入到框架中,并用于缓存目的。缓存可以应用于Spring应用程序的任何层,例如数据访问层或服务层,等等。缓存甚至可以同时应用于多层。毕竟,缓存是一个横切的关注点,而且不是巧合地用春季AOP实现的。

抽象为最常见的缓存操作提供了一个包括API接口注解的外观(例如:Cache.put(key, value)Cache.get(key)Cache.evict(key)等)。这些缓存操作在大多数缓存提供程序实现(例如Redis、Hazelcast、Apache,甚至是Java的MapConcurrentMap实现;缓存实际上是类似于地图的数据结构)中是相当标准和常见的。

每个缓存提供程序都必须提供由Spring的缓存抽象定义的CacheCacheManager接口的实现,以便能够插入到框架中进行缓存。通过这种方式,每个缓存提供程序都可以使用Spring的缓存API (或者注释,甚至是JCache注解)进行一般的处理,这样您就不需要与任何特定的缓存提供程序绑定,这就允许您在应用程序用例或需求更改时交换缓存提供程序。

到目前为止还算合理吗?

开箱即用的Spring (Boot)配置ConcurrentMap缓存实现(请参阅这里,然后是这里 (来源),最后是这里,然后是),当应用程序类路径上没有其他缓存提供程序(例如Redis)时,缓存提供程序插入到框架中。

但是,ConcurrentMap缓存实现与Redis实现有很大的不同。后面的插件位于Redis客户机中,可以远程连接到Redis服务器集群。这意味着,从本质上说,您可以拥有一个“分布式”缓存,假设您正确地配置了您的缓存提供程序(如Redis ),负载可以均匀分布。

并非所有缓存提供程序都是相同的。有些还提供了许多额外的服务,还有一些,比如Apache Geode,甚至可以作为整个应用程序的记录系统(SoR),甚至可能最终取代您的关系数据库管理系统。

即使大多数缓存提供程序都能够进行复杂的驱逐(LRU、LFU)和过期,Spring的缓存抽象仍然是这些功能的契约。这将留给您根据您选择的缓存提供程序来决定和配置。

像Apache和Hazelcast这样的完全分布式缓存提供程序还提供内存管理功能(毕竟,键/值都存储在内存中)。它们甚至可以配置为持久性(因此是SoR UC),支持不同的拓扑:客户机/服务器、广域网(多站点)、嵌入式,并支持不同的缓存模式(缓存-旁白、内联缓存、近缓存等)以及不同的缓存UC (例如(HTTP)会话状态缓存)。

免责声明:我是Spring产品背后的Spring数据工程师,所以我将在参考指南中给您留下一个专门用于“缓存”的第二章

希望这篇文章能给你足够的时间来思考。

如果您有其他问题,请在评论中提出。

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

https://stackoverflow.com/questions/72092382

复制
相关文章

相似问题

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