Spring Cache 抽象是否支持多值查询?
代替:
@Cacheable("books") public Book findBook(ISBN isbn) {...}
想象一下这样的查询:
@Cacheable("books") public List< Book > findBook(List< ISBN > isbns) {...}
这支持吗?它会单独缓存集合中返回的每本书吗?
谢谢!
Spring Cache 将整个结果存储在单个缓存键下,因此无法单独存储集合中返回的每个对象。如果缓存 JPA 查询的结果,您可以使用查询缓存。在其他情况下,如果您可以选择 memcached,您可以尝试Simple Spring Memcached和 ReadThroughMultiCache 注释。它将集合的每个元素单独存储在专用缓存键下。
查询缓存确实可以缓存每个查询输入的结果列表。请注意,只有返回实体的 ID 会保存在查询缓存中。如果您也希望缓存属性,则必须为返回的实体类型本身单独启用实体缓存。
为我工作。这是我的答案的链接。 https://stackoverflow.com/a/60992530/2891027
TL:博士
@Cacheable(cacheNames = "test", key = "#p0")
public List<String> getTestFunction(List<String> someIds) {
我的示例是使用字符串而不是自定义对象。
希望它至少有一点帮助:)