2

Spring Cache 抽象是否支持多值查询?

代替:

@Cacheable("books") public Book findBook(ISBN isbn) {...}

想象一下这样的查询:

@Cacheable("books") public List< Book > findBook(List< ISBN > isbns) {...}

这支持吗?它会单独缓存集合中返回的每本书吗?

谢谢!

4

3 回答 3

4

Spring Cache 将整个结果存储在单个缓存键下,因此无法单独存储集合中返回的每个对象。如果缓存 JPA 查询的结果,您可以使用查询缓存。在其他情况下,如果您可以选择 memcached,您可以尝试Simple Spring Memcached和 ReadThroughMultiCache 注释。它将集合的每个元素单独存储在专用缓存键下。

于 2012-11-02T12:15:05.160 回答
1

查询缓存确实可以缓存每个查询输入的结果列表。请注意,只有返回实体的 ID 会保存在查询缓存中。如果您也希望缓存属性,则必须为返回的实体类型本身单独启用实体缓存

于 2012-11-01T14:24:39.950 回答
0

为我工作。这是我的答案的链接。 https://stackoverflow.com/a/60992530/2891027

TL:博士

@Cacheable(cacheNames = "test", key = "#p0")
public List<String> getTestFunction(List<String> someIds) {

我的示例是使用字符串而不是自定义对象。

希望它至少有一点帮助:)

于 2020-04-02T13:32:23.603 回答