Короче говоря, когда @CacheEvict вызывается для метода и если ключ для записи не найден, Gemfire генерирует EntryNotFoundException.
Теперь подробно,
у меня есть класс
class Person {
String mobile;
int dept;
String name;
}
У меня есть две области кэша, определенные как personRegion и personByDeptRegion, и служба выглядит следующим образом:
@Service
class PersonServiceImpl {
@Cacheable(value = "personRegion")
public Person findByMobile(String mobile) {
return personRepository.findByMobile(mobile);
}
@Cacheable(value = "personByDeptRegion")
public List<Person> findByDept(int deptCode) {
return personRepository.findByDept(deptCode);
}
@Caching(
evict = { @CacheEvict(value = "personByDeptRegion", key="#p0.dept"},
put = { @CachePut(value = "personRegion",key = "#p0.mobile")}
)
public Person updatePerson(Person p1) {
return personRepository.save(p1);
}
}
Когда есть вызов updatePerson и если в personByDeptRegion нет записей, это вызовет исключение EntryNotFoundException для ключа 1 (или любого другого кода отдела). Существует очень большая вероятность того, что этот метод будет вызываться до вызова методов @Cacheable, и вы хотите избежать этого исключения. Можем ли мы каким-либо образом настроить поведение Gemfire, чтобы оно изящно возвращалось, когда ключ не существует для данного региона? Кроме того, мне также не терпится узнать, есть ли лучшая реализация описанного выше сценария с использованием Gemfire в качестве кеша.
Spring Data Gemfire: 1.7.4
Версия Gemfire: v8.2.1
Примечание. Приведенный выше код предназначен только для представления, и у меня есть несколько сервисов с одной и той же проблемой в реальном проекте.
1.8.4.RELEASE
— самая последняя версия (основанная на GF 8.2.0). 1.7.6.RELEASE — это поддерживаемая в настоящее время версия обслуживания (на основе GF 8.1.0). И SDG 1.9 в настоящее время находится в разработке: 1.9 M1 уже доступна, а 1.9 GA запланирована на 12 декабря. Вы можете быть в курсе, просматривая страницу проекта SDG (projects.spring.io/spring-data- гемфайр) ... - person John Blum   schedule 03.10.2016