3 回答

TA貢獻1772條經驗 獲得超8個贊
我會自行回答我的問題,因為沒有人愿意提供任何幫助。
我在處理此問題時遇到的問題是對緩存使用情況的誤解。我在此問題上發布的需求與如何更新緩存列表的成員有關(方法響應)。緩存無法解決此問題,因為緩存的值是列表本身,因此我們無法部分更新緩存的值。
我想解決此問題的方式與“地圖”或分布式地圖有關,但我想使用@Cacheable注釋。通過使用分布式地圖,無需使用即可實現我在問題中提出的要求@Cacheable。因此,返回的列表可能已經更新。
因此,我不得不(希望)@Cacheable從另一個角度來解決這個問題。每當需要更新的緩存時,我都會使用此代碼對其進行刷新。
我使用下面的代碼來解決我的問題:
@Cacheable("users")
List<User> list() {
return userRepository.findAll()
}
// Refresh cache any time the cache is modified
@CacheEvict(value = "users", allEntries = true")
void create(User user) {
userRepository.create(user)
}
@CacheEvict(value = "users", allEntries = true")
void update(User user) {
userRepository.update(user)
}
@CacheEvict(value = "users", allEntries = true")
void delete(User user) {
userRepository.delete(user)
}
另外,我為spring緩存啟用了日志記錄輸出,以確保/了解緩存的工作方式:
# Log Spring Cache output
logging.level.org.springframework.cache=TRACE
添加回答
舉報