gpt4 book ai didi

java - 如何使用 Spring SimpleCacheManager 缓存多个列表?

转载 作者:行者123 更新时间:2023-11-30 07:02:15 34 4
gpt4 key购买 nike

我正在写一个书店,我想缓存一个 List<Ebook>电子书和普通书籍列表 List<Book>所以我不必在每次页面刷新时调用我的数据库。

现在我正在使用SimpleCacheManager我定义了两个不同的缓存:

<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
<property name="caches">
<set>
<bean
class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
p:name="bookList" />
<bean
class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
p:name="ebookList" />
</set>
</property>
</bean>

如果showBookList(...)showEbookList(...)第一次被称为List<...>由服务缓存,如果重新加载页面,则会从缓存中加载书籍/电子书。如果我添加或删除电子/书籍,该服务会更新缓存。这是正确的方法还是有更简单的方法?我问这个是因为这句话:

While in most cases, one cache is enough, the Spring framework also supports multiple caches to be passed as parameters.

所以问自己我的代码是否写得好或者太复杂了。我正在使用 Spring 4.3.2 和 Websphere Portal 8.5.5,并且正在构建 JSR286 Portlet。

最佳答案

至少在这种情况下,缓存可以被视为映射。如果您有两个缓存,那么您就有两个 map 。

使用 Spring 缓存,default key generation基于方法名和参数,并且会缓存返回值。因此,每个方法最终都会出现在一组不同的条目中。

单独的缓存有利有弊。查找可以加快,因为要搜索的键集较小,但这通常是微不足道的,因为如今 HashMap 非常快,因此您需要一个相当大的映射才能受益。缺点是内存开销和管理更多缓存的复杂性。

如果您的应用程序很简单/小型/不是企业版,那么为了简单起见,我会倾向于使用单个缓存,直到/除非这显示出问题。

关于java - 如何使用 Spring SimpleCacheManager 缓存多个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40722731/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com