春天Redis的缓存不驱逐
问题描述:
下工作(在逐出结果执行):春天Redis的缓存不驱逐
fooController {
@ApiEndpoint
public delete(id) {
fooService.deleteFoo(id)
}
}
fooService {
@CacheEvict(value = "cache1", key = "#id")
public void deleteFoo(Long id) {
//delete logic here
}
}
但是,这并不正常工作(没有什么是从缓存逐出):
fooController {
@ApiEndpoint
public delete(name) {
fooService.deleteFoo2(name)
}
}
fooService {
public void deleteFoo2(String name) {
//delete logic here
deleteFoo(name.getId())
}
@CacheEvict(value = "cache1", key = "#id")
public void deleteFoo(Long id) {
//delete logic here
}
}
为什么我的@CacheEvict注释仅在从控制器直接调用该方法时调用?
我使用Redis作为缓存机制。
答
当你在课堂内调用你的方法时,Aop并不是一团糟。 当另一个类调用方法时它正在工作。 所以你可以在另一个服务中定义deleteFoo。