弹簧分别缓存列表中的所有元素
我正在尝试将缓存添加到CRUD应用程序,我开始做这样的事情:
@Cacheable("users")
List<User> list() {
return userRepository.findAll()
}
@CachePut(value = "users", key = "#user.id")
void create(User user) {
userRepository.create(user)
}
@CachePut(value = "users", key = "#user.id")
void update(User user) {
userRepository.update(user)
}
@CacheEvict(value = "users", key = "#user.id")
void delete(User user) {
userRepository.delete(user)
}
我遇到的问题是,我希望创建/更新/删除操作可以更新已存储在缓存中的操作元素(请注意,这不是从数据库拉取而是从数据引擎中提取),但我无法做到这一点。list()
list()
我想单独缓存 返回的所有元素,以便所有其他操作都可以使用 更新缓存。或者,进行所有操作以更新已存储在缓存中的列表。list()
#user.id
我读到我可以在更新时逐出整个缓存,但我想避免这样的事情:
@CacheEvict(value = "users", allEntries=true)
void create(User user) {
userRepository.create(user)
}
有没有办法在缓存的集合中创建/更新/删除值?还是将集合中的所有值缓存为单个键?