问题标签 [spring-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
363 浏览

java - 在 Spring EL 中使用数组的内容

我正在使用 Spring 的缓存工具。当我调用以下方法时,我想清除数组中所有值的缓存receiptObject.resolverIds

在这里,我只使用了第一个元素,但我想将其推广到数组中的所有元素。我该怎么做?

0 投票
1 回答
873 浏览

hibernate - 尝试访问 RedisCacheManager 留在 Redis 中的分离对象时出现 LazyInitializationException

我使用 Spring 数据 Redis 来缓存 Redis 中的序列化 JPA 实体org.springframework.data.redis.cache.RedisCacheManager

这是方法:

不幸的是,在我的启动应用程序重新启动后,实体仍然缓存在 Redis 中,我得到一个org.hibernate.LazyInitializationException

这可能是由于本文中描述的原因即通过休眠访问分离的对象 - 在我的情况下,序列化对象留在缓存中。

有人可以建议处理这个问题的策略吗?

  1. 我是否应该在销毁我的应用程序时清理/清空缓存,记住重新填充缓存的过程很昂贵,并且应用程序将托管在云(Heroku)中,其中测功机/容器被销毁并重新创建(因此重新启动) 相当频繁。
  2. 或者有没有办法将缓存的实体重新附加到实体管理器?
  3. 有更好的解决方案吗?
0 投票
2 回答
9693 浏览

java - EhCache : 为什么我的 diskStore 路径目录没有创建?

我正在使用ehcache。我正在缓存 Spring @Service 方法:

这是 Spring 配置片段:

这是我的 ehcache 配置。

当我从 Spring @Controller 调用服务方法 getAllDatas 时,该方法被缓存,第二次调用检索结果存储在缓存中。<diskStore path="C:/TEMP/ehcache"/>我不明白的是我在 ehcache.xml 中找不到指定。所以我有两个问题:

问题一:为什么没有创建“C:/TEMP/ehcache”目录?

问题2:我的服务结果缓存在哪里?

0 投票
4 回答
7243 浏览

java - 如果被超过 1 个线程访问,Spring @Cacheable 会阻塞吗?

如果标记的方法@Cacheable需要 10 分钟才能完成,并且两个线程 t1,t2 访问该方法。

t1 在时间 0 访问(缓存方法现在第一次运行) t2 在时间 t1+5mins 访问

这是否意味着 t2 将在大约 5 分钟内不会访问数据,因为 t1 已经开始@Cacheable操作并且它将在 5 分钟内完成(因为它已经运行了 5 分钟),还是@Cacheablet2 会调用一个新的调用?

0 投票
1 回答
2957 浏览

java - 如何实现 CacheLoader 以便读取 @Cacheable 键

在尝试使用内联刷新实现我自己的缓存加载器时。加载的此缓存正在使用 RefreshAheadCacheFactory

如所述

http://terracotta.org/documentation/4.1/bigmemorymax/api/refresh-ahead#scheduled-refresh-ahead

&

http://www.ehcache.org/generated/2.9.0/html/ehc-all/#page/Ehcache_Documentation_Set%2Fco-dec_creating_a_decorator_2.html

尝试添加自己的密钥时收到错误消息:

错误是:

如何将密钥“myKey”添加到缓存中?

我想我错误地设置了自定义缓存加载器。如何实现 loadAll 方法。这是我的实现:

这个 HashMap 是否应该包含键“myKey”?

当我自定义此方法时:

}

我收到同样的错误。

所有代码和配置:

弹簧-ehcache.xml:

我的 ehcache.xml :


0 投票
1 回答
468 浏览

spring - 来自 Iterable 集合的 CacheEvict

我有两种这样的方法:

首先,我要让用户存款

其次,当保存包含一个存款作为关系的任务实体时,我希望通过 id 从缓存存款中逐出:

(弹簧数据接口)

但那没有用。

0 投票
2 回答
7820 浏览

spring - Spring Boot 缓存不起作用

我试图配置弹簧缓存,但该方法仍在执行。我有以下代码,并且 CivilStatus 缓存不起作用。getCivilStatus() 方法总是被执行。有人知道原因吗?

}

0 投票
1 回答
21584 浏览

java - Generating unique cache key with Spring KeyGenerator not working

I'm having the issue when my cache keys are colliding in Spring using the @Cacheable annotation. For instance, with the following two methods:

Here is my cache configuration, in which I've added a keyGenerator and a cacheManager bean:

For some reason, the cache key always gets set to the name parameter in the method, not the result of the keyGenerator.generate(..) method, causing both methods to return the same cache result.

I know that I can specify the key manually on each @Cacheable annotation, but that seems a little extensive for every method I'd like to cache.

Edit

I've noticed that setting the keyGenerator option inside of the @Cacheable annotation to the name of my bean resolves the issue, like so:

And setting the keyGenerator option in the @CacheConfig annotation on the class also resolves the issue. It seems that this shouldn't be necessary though. Am I missing something?

0 投票
4 回答
7439 浏览

spring-cache - Spring Cache with Redis - 如果与 Redis 的连接失败,如何优雅地处理甚至跳过缓存

我已经在我的 Spring 应用程序中启用了缓存,我使用 Redis 来达到这个目的。但是,每当发生连接故障时,应用程序就会停止工作,而我认为它最好跳过缓存并继续正常执行流程。

那么,有没有人知道如何在 Spring 中优雅地做到这一点?

这是我得到的例外。

0 投票
1 回答
2678 浏览

java - @cacheEvict not working while calling the method from different controller

In spring application we have two controllers i.e. controller1, controller2 and one services i.e. service1

i want to use method caching and for that i have configured spring cache.

i am caching method named method1 in service1 with @Cacheable(value = "cache1") and for removing cache i am using @CacheEvict(value = "cache1", allEntries = true) on another method named method2 in service1.

so caching works fine but evicting not working as i want.

so if i call method1 (cachable method) from controller1 it will cache and call method2 (cacheEvict method) from controller1 then it will remove / evict cachce properly BUT when i call method2 (cacheEvict method) from controller2 then it is NOT REMOVING / EVICTING CACHE but I WANT IT TO DO.

I want to evict / remove the cache every time the method get called doesn't matter from which controller it get called.

this is required in most cases because controller1 is for customer and controller2 is for admin. we cache methods used in controller1 and we want to remove the same cache when any update happens from controller2 i.e. admin.