頁面快取,url快取快取時間短,內容多,適合變化不大的頁面。
物件快取,只快取乙個物件,時間長,經常設定為0,永久有效。
與頁面快取的最大區別是,當乙個物件快取發生了變動,與這個物件快取有關的快取都要更新,否則會出現資料不一致。比如,更新了更改了密碼,那麼就要取更新token這個快取。
建立乙個查詢登入物件的快取
miaoshauserservice的方法:getbyid
public miaoshauser getbyid
(long id)
//快取中找不到
user=miaoshauserdao.
getbyid
(id);if
(user!=null)
return user;
}
當有方法會改變資料庫的內容,使得資料庫內容與快取內容不一致是,需要更新快取。
比如修改使用者的密碼:
miaoshauserservice的方法:updatepassword
public
boolean
updatepassword
(string token,
long id,string passnew)
//2.更新密碼
miaoshauser toupdateuser=
newmiaoshauser()
; toupdateuser.
setid
(id)
; toupdateuser.
setpassword
(md5util.
inputpasstodbpass
(passnew, user.
getsalt()
)); miaoshauserdao.
update
(toupdateuser)
;//3.更新資料庫與快取,一定保證資料一致性,修改token關聯的物件以及id關聯的物件
redisservice.
delete(""
+id)
;//不能直接刪除token,刪除之後就不能登入了
user.
setpassword
(toupdateuser.
getpassword()
);redisservice.
set(token,user)
;return
true
;}
秒殺專案學習筆記 異常處理
目的 將校驗失敗的錯誤資訊在客戶端顯示出來。實現 新建乙個全域性異常 攔截繫結異常bindexception,輸出錯誤資訊,並且優化返回資訊的過程。globleexceptionhandler 類 controlleradvice responsebody public class globleex...
Hibernate 快取 學習筆記
一.什麼是快取 快取是位於應用程式與物理資料來源之間,用於臨時存放複製資料的記憶體區域,目的是為了減少應用程式對物理資料來源訪問的次數,從而提高應用程式的執行效能.hibernate在查詢資料時,首先到快取中去查詢,如果找到就直接使用,找不到的時候就會從物理資料來源中檢索,所以,把頻繁使用的資料載入...
快取設計學習筆記
最近在 redis 開發與運維 這是在看11章時候記得筆記 先放個最簡單的圖,這裡面每一層都可以有快取 總之,請求的任何乙個環節都可以根據需要做快取 剔除演算法 lru lfu fifo 超時剔除 主動更新這個實際上就是快取內容的選擇問題,假設mongo裡有一條完整的記錄,我們是選擇全部資料都快取還...