Spring Boot Cache批量访问和单独访问

问题描述 投票:1回答:1

对于单个实体重复访问DB比进行批量选择要慢得多。如何将批量选择的结果缓存到缓存中,以后再单独访问?

例如,我有一个Employee实体:

public class Employee {
  private Integer id;
}

我有可以通过批量选择访问它的存储库,或者通过id单独访问它:

public class EmployeeRepository {
  public Map<Integer, Employee> retrieveByEmployeeIds(List<Integer> ids) {
    // impl
  }
  public Employee retrieveByEmployeeId(Integer id) {
    // impl
  }
}

我如何实现它,以便在调用retrieveByEmployeeId(Integer id)时它将检查与retrieveByEmployeeIds(List<Integer> ids)相同的缓存,如果它不存在,它将调用DB,并再次使用id存储该缓存?

spring-boot spring-cache
1个回答
1
投票

我以前回答过类似的问题,例如见(Spring Cache with collection of items/entities)。

从本质上讲,你必须实现一个自定义的CacheManagerCache,这是构成Spring的Cache Abstraction基础的2个主要接口,如here所述。它甚至可以扩展或委托给现有的缓存提供程序,但您必须“装饰”现有的功能。

我上面提到的链接也包含例子。

希望这有助于您了解如何处理您的特定UC。

© www.soinside.com 2019 - 2024. All rights reserved.