【发布时间】:2018-05-27 09:35:06
【问题描述】:
我正在使用 EhCache 和 SpringBoot
我执行 Get 操作以检索列表并将响应保存在缓存中。它按预期工作正常。 现在我正在对 list 的元素执行 Put 操作。该元素的 Put 操作成功,并且缓存也更新了。 但是当我再次进行获取操作以检索要测试的列表时 无论我的更新缓存是否正常工作,我在响应中只得到了一个更新的元素而不是总列表
这里是sn-p的代码:
@Override
@Cacheable(value = "practiceId", key="#practiceId", unless="#result==null")
public List<ExposedLocation> getLocations(String practiceId) {
// getLocations list logic
}
@CachePut(value = "practiceId", key ="#practiceId")
public List<ExposedLocation> updateLocation(List<LocationDB> locationList, String practiceId) {
//Update location logic
}
ehcache.xml:
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="false">
<cache name="practiceId" maxEntriesLocalHeap="200" eternal="false"
memoryStoreEvictionPolicy="LFU" timeToLiveSeconds="600"
timeToIdleSeconds="200">
</cache>
所以根据我对 Response 的分析和我使用过的一些测试用例, 我得出的结论是,由于 Get 和 Put 的响应不同,@CachePut 将首先删除缓存并创建新缓存 它正在将更新的响应放入新的缓存中。
所以任何人都可以帮助我检索包含更新元素的完整列表。 我没有配置@CachePut??????
【问题讨论】: