課程
/后端開發
/Java
/Java高并發秒殺API之高并發優化
想問問大神們,mybatis有二級緩存,為什么還要用redis,原因是什么?
2018-01-23
源自:Java高并發秒殺API之高并發優化
正在回答
Mybatis一級緩存作用域是session,session?commit之后緩存就失效了
Mybatis二級緩存作用域是sessionfactory,該緩存是以namespace為單位的(也就是一個Mapper.xml文件),不同namespace下的操作互不影響。所有對數據表的改變操作都會刷新緩存。但是一般不要用二級緩存,例如在UserMapper.xml中有大多數針對user表的操作。但是在另一個XXXMapper.xml中,還有針對user單表的操作。這會導致user在兩個命名空間下的數據不一致。如果在UserMapper.xml中做了刷新緩存的操作,在XXXMapper.xml中緩存仍然有效,如果有針對user的單表查詢,使用緩存的結果可能會不正確,讀到臟數據。
Redis比之一、二級緩存的好處很多,Redis可以搭建在其他服務器上,緩存容量可擴展。Redis可以靈活的使用在需要緩存的數據上,比如一些熱點數據。
h2022 提問者
同問?。。?!
舉報
Java實現高并發秒殺API的第四門課,小伙伴一定可以從中受益
10 回答redis緩存和mybatis的緩存有啥不一樣?什么時候應該用那種?
1 回答想問下老師這里使用redis緩存的目的是不是只是演示下怎么進行緩存一些不用經常讀寫的sql對象而不用考慮刷新緩存呢?
3 回答redis緩存的上限???
1 回答有存儲過程為什么還需要事務呢
1 回答為什么不用redis的hash來存儲對象?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-08-12
Mybatis一級緩存作用域是session,session?commit之后緩存就失效了
Mybatis二級緩存作用域是sessionfactory,該緩存是以namespace為單位的(也就是一個Mapper.xml文件),不同namespace下的操作互不影響。所有對數據表的改變操作都會刷新緩存。但是一般不要用二級緩存,例如在UserMapper.xml中有大多數針對user表的操作。但是在另一個XXXMapper.xml中,還有針對user單表的操作。這會導致user在兩個命名空間下的數據不一致。如果在UserMapper.xml中做了刷新緩存的操作,在XXXMapper.xml中緩存仍然有效,如果有針對user的單表查詢,使用緩存的結果可能會不正確,讀到臟數據。
Redis比之一、二級緩存的好處很多,Redis可以搭建在其他服務器上,緩存容量可擴展。Redis可以靈活的使用在需要緩存的數據上,比如一些熱點數據。
2018-07-30
同問?。。?!